@gusto/embedded-react-sdk 0.57.2 → 0.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +108 -0
- package/dist/components/Common/DataView/DataCards/DataCards.js +98 -66
- package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
- package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js +11 -9
- package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js.map +1 -1
- package/dist/components/Common/DataView/DataTable/DataTable.js +86 -75
- package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
- package/dist/components/Common/DataView/DataView.js.map +1 -1
- package/dist/components/Common/DataView/getSortControls.js +22 -0
- package/dist/components/Common/DataView/getSortControls.js.map +1 -0
- package/dist/components/Common/DataView/useDataView.js +30 -24
- package/dist/components/Common/DataView/useDataView.js.map +1 -1
- package/dist/components/Common/DateRangeFilter/DateRangeFilter.js +32 -32
- package/dist/components/Common/DateRangeFilter/DateRangeFilter.js.map +1 -1
- package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
- package/dist/components/Common/UI/Table/Table.js +65 -25
- package/dist/components/Common/UI/Table/Table.js.map +1 -1
- package/dist/components/Common/UI/Table/Table.module.scss.js +8 -4
- package/dist/components/Common/UI/Table/Table.module.scss.js.map +1 -1
- package/dist/components/Common/UI/Table/TableTypes.js.map +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -6
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -4
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +5 -6
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +6 -7
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -4
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -4
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +3 -4
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +30 -45
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js +11 -12
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js +34 -14
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js +106 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js +136 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js +38 -20
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js +78 -44
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js +45 -37
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js +244 -95
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js +22 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js +13 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js +48 -43
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js +57 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js +83 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js +84 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js.map +1 -0
- package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +109 -39
- package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js.map +1 -1
- package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +78 -83
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -4
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js +5 -5
- package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
- package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js +1 -1
- package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js.map +1 -1
- package/dist/components/Contractor/Compensation/management/CompensationEditForm.js +45 -54
- package/dist/components/Contractor/Compensation/management/CompensationEditForm.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js +4 -4
- package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js +17 -22
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js.map +1 -1
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js +3 -3
- package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +1 -0
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +122 -113
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js +63 -54
- package/dist/components/Contractor/ContractorList/shared/useContractorList.js.map +1 -1
- package/dist/components/Contractor/Dashboard/Dashboard.js +20 -20
- package/dist/components/Contractor/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js +10 -10
- package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js.map +1 -1
- package/dist/components/Contractor/Landing/Landing.js +43 -39
- package/dist/components/Contractor/Landing/Landing.js.map +1 -1
- package/dist/components/Contractor/NewHireReport/NewHireReport.js +3 -3
- package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
- package/dist/components/Contractor/PaymentMethod/onboarding/PaymentMethod.js +39 -48
- package/dist/components/Contractor/PaymentMethod/onboarding/PaymentMethod.js.map +1 -1
- package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +1 -1
- package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +10 -10
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
- package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +4 -4
- package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +8 -8
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +5 -5
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +3 -3
- package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
- package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js +76 -69
- package/dist/components/Contractor/Profile/onboarding/ContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js +1 -1
- package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +27 -29
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +15 -13
- package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js +1 -1
- package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js.map +1 -1
- package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js +2 -9
- package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
- package/dist/components/Contractor/Submit/Submit.js +18 -18
- package/dist/components/Contractor/Submit/Submit.js.map +1 -1
- package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js +6 -6
- package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js.map +1 -1
- package/dist/components/Contractor/shared/hourlyRate.js +14 -0
- package/dist/components/Contractor/shared/hourlyRate.js.map +1 -0
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js +63 -63
- package/dist/components/Employee/Compensation/management/CompensationCard/CompensationCard.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +25 -25
- package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js +15 -15
- package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +1 -1
- package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
- package/dist/components/Employee/Dashboard/Dashboard.js +25 -25
- package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +7 -7
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js +6 -6
- package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
- package/dist/components/Employee/Landing/Landing.js +37 -33
- package/dist/components/Employee/Landing/Landing.js.map +1 -1
- package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +27 -27
- package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js +65 -74
- package/dist/components/Employee/PaymentMethod/onboarding/ListView.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js +6 -6
- package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js +1 -1
- package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
- package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js +8 -15
- package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +11 -11
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +12 -12
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js +26 -26
- package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +16 -16
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +2 -3
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +84 -82
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.js +8 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.js.map +1 -0
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +97 -92
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +1 -1
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +18 -18
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +146 -134
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.module.scss.js +14 -12
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.module.scss.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +34 -33
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +49 -48
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +0 -4
- package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js +51 -38
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +121 -102
- package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +6 -6
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +79 -74
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +9 -9
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +92 -83
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +23 -27
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +82 -75
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.js +416 -0
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.js.map +1 -0
- package/dist/components/Payroll/{UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js → RropPayrollEditEmployee/RropPayrollEditEmployee.module.scss.js} +1 -1
- package/dist/components/Payroll/RropPayrollEditEmployee/RropPayrollEditEmployee.module.scss.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfiguration.js +97 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfiguration.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.js +106 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.js.map +1 -0
- package/dist/components/Payroll/{TransitionCreation/TransitionCreationPresentation.module.scss.js → TransitionConfiguration/TransitionConfigurationPresentation.module.scss.js} +1 -1
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.module.scss.js.map +1 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.js +10 -0
- package/dist/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.js.map +1 -0
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +86 -64
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js +126 -77
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.module.scss.js +8 -0
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.module.scss.js.map +1 -0
- package/dist/components/Payroll/helpers.js +1 -1
- package/dist/components/Payroll/helpers.js.map +1 -1
- package/dist/components/Payroll/index.js +16 -20
- package/dist/components/Payroll/index.js.map +1 -1
- package/dist/components/Payroll/payrollTypes.js +1 -1
- package/dist/components/Payroll/payrollTypes.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +2 -3
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js +11 -14
- package/dist/components/Payroll/useUnprocessedTransitionPayPeriods.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.js +18 -17
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/payScheduleCustomNameHook.js +31 -0
- package/dist/contexts/ApiProvider/payScheduleCustomNameHook.js.map +1 -0
- package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js +1 -1
- package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js.map +1 -1
- package/dist/contexts/FeaturesProvider/FeaturesProvider.js +14 -0
- package/dist/contexts/FeaturesProvider/FeaturesProvider.js.map +1 -0
- package/dist/contexts/FeaturesProvider/useFeature.js +7 -0
- package/dist/contexts/FeaturesProvider/useFeature.js.map +1 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +32 -30
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
- package/dist/i18n/I18n.js +2 -3
- package/dist/i18n/I18n.js.map +1 -1
- package/dist/i18n/en/Company.Management.PaySchedule.json.js +31 -13
- package/dist/i18n/en/Company.Management.PaySchedule.json.js.map +1 -1
- package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js +20 -12
- package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js.map +1 -1
- package/dist/i18n/en/Contractor.Profile.json.js +1 -1
- package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +29 -23
- package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollHistory.json.js +1 -1
- package/dist/i18n/en/Payroll.PayrollLanding.json.js +1 -1
- package/dist/i18n/en/Payroll.PayrollList.json.js +5 -5
- package/dist/i18n/en/{Payroll.UNSTABLE_PayrollEditEmployee.json.js → Payroll.RropPayrollEditEmployee.json.js} +42 -38
- package/dist/i18n/en/Payroll.RropPayrollEditEmployee.json.js.map +1 -0
- package/dist/i18n/en/Payroll.TransitionConfiguration.json.js +28 -0
- package/dist/i18n/en/Payroll.TransitionConfiguration.json.js.map +1 -0
- package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js +16 -12
- package/dist/i18n/en/Payroll.TransitionPayrollAlert.json.js.map +1 -1
- package/dist/i18n/en/common.json.js +1 -1
- package/dist/package.json.js +1 -1
- package/dist/partner-hook-utils/form/composeSubmitHandler.js +55 -48
- package/dist/partner-hook-utils/form/composeSubmitHandler.js.map +1 -1
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js +31 -29
- package/dist/partner-hook-utils/form/fields/RadioGroupHookField.js.map +1 -1
- package/dist/shared/constants.js +7 -6
- package/dist/shared/constants.js.map +1 -1
- package/dist/src/components/Common/DataView/DataCards/DataCards.d.ts +3 -1
- package/dist/src/components/Common/DataView/DataTable/DataTable.d.ts +3 -1
- package/dist/src/components/Common/DataView/DataView.d.ts +2 -0
- package/dist/src/components/Common/DataView/getSortControls.d.ts +24 -0
- package/dist/src/components/Common/DataView/useDataView.d.ts +22 -1
- package/dist/src/components/Common/DateRangeFilter/DateRangeFilter.d.ts +2 -2
- package/dist/src/components/Common/OnboardingStatusBadge/index.d.ts +1 -1
- package/dist/src/components/Common/UI/Table/TableTypes.d.ts +71 -2
- package/dist/src/components/Company/PaySchedule/PaySchedule.d.ts +1 -9
- package/dist/src/components/Company/PaySchedule/PayScheduleComponents.d.ts +0 -1
- package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.d.ts +10 -3
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.d.ts +21 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.d.ts +34 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.d.ts +9 -3
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.d.ts +5 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.d.ts +10 -10
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.d.ts +12 -4
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.d.ts +19 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.d.ts +17 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.d.ts +34 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/usePayScheduleAssignment.d.ts +16 -3
- package/dist/src/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.d.ts +23 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.d.ts +25 -0
- package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/fields.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +1 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +4 -15
- package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +2 -2
- package/dist/src/components/Contractor/ContractorList/shared/index.d.ts +1 -1
- package/dist/src/components/Contractor/ContractorList/shared/useContractorList.d.ts +38 -0
- package/dist/src/components/Contractor/Landing/Landing.d.ts +5 -2
- package/dist/src/components/Contractor/shared/hourlyRate.d.ts +23 -0
- package/dist/src/components/Employee/Landing/Landing.d.ts +5 -2
- package/dist/src/components/Payroll/OffCycleTaxWithholdingTable/getDefaultWithholdingPayPeriod.d.ts +9 -0
- package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/TimeOffField.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.d.ts +2 -0
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.d.ts +2 -2
- package/dist/src/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +8 -6
- package/dist/src/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.d.ts +0 -8
- package/dist/src/components/Payroll/PayrollFlow/PayrollFlow.d.ts +5 -3
- package/dist/src/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +2 -3
- package/dist/src/components/Payroll/PayrollFlow/payrollStateMachine.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/PayrollLanding/PayrollLanding.d.ts +18 -5
- package/dist/src/components/Payroll/PayrollList/PayrollList.d.ts +11 -5
- package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +2 -2
- package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/{UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts → RropPayrollEditEmployee/RropPayrollEditEmployee.d.ts} +9 -5
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfiguration.d.ts +55 -0
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfigurationPresentation.d.ts +9 -0
- package/dist/src/components/Payroll/TransitionConfiguration/TransitionConfigurationTypes.d.ts +52 -0
- package/dist/src/components/Payroll/TransitionConfiguration/index.d.ts +2 -0
- package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +5 -2
- package/dist/src/components/Payroll/helpers.d.ts +2 -2
- package/dist/src/components/Payroll/index.d.ts +2 -6
- package/dist/src/components/Payroll/usePreparedPayrollData.d.ts +2 -2
- package/dist/src/contexts/ApiProvider/payScheduleCustomNameHook.d.ts +14 -0
- package/dist/src/contexts/ApiProvider/payScheduleCustomNameHook.test.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -1
- package/dist/src/contexts/FeaturesProvider/FeaturesProvider.d.ts +21 -0
- package/dist/src/contexts/FeaturesProvider/useFeature.d.ts +53 -0
- package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +3 -0
- package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +38 -10
- package/dist/src/contexts/index.d.ts +1 -0
- package/dist/src/i18n/en/common.json.d.ts +5 -1
- package/dist/src/i18n/types.d.ts +195 -70
- package/dist/src/models/external.d.ts +63 -48
- package/dist/src/partner-hook-utils/form/fields/RadioGroupHookField.d.ts +9 -7
- package/dist/src/shared/constants.d.ts +5 -3
- package/dist/src/test-utils/renderWithProviders.d.ts +2 -0
- package/dist/style.css +1 -1
- package/docs/guides/endpoint-inventory.json +57 -40
- package/package.json +23 -22
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js +0 -29
- package/dist/components/Payroll/PayrollFlow/TransitionFlowContextual.js.map +0 -1
- package/dist/components/Payroll/Transition/TransitionFlow.js +0 -60
- package/dist/components/Payroll/Transition/TransitionFlow.js.map +0 -1
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js +0 -31
- package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +0 -1
- package/dist/components/Payroll/Transition/transitionStateMachine.js +0 -49
- package/dist/components/Payroll/Transition/transitionStateMachine.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +0 -100
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +0 -110
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.module.scss.js.map +0 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js +0 -21
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/TransitionPayroll.js +0 -48
- package/dist/components/Payroll/TransitionPayroll/TransitionPayroll.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/TransitionPayrollComponents.js +0 -35
- package/dist/components/Payroll/TransitionPayroll/TransitionPayrollComponents.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.js +0 -23
- package/dist/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.js.map +0 -1
- package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js +0 -29
- package/dist/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.js.map +0 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +0 -411
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +0 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js.map +0 -1
- package/dist/i18n/en/Payroll.Transition.json.js +0 -8
- package/dist/i18n/en/Payroll.Transition.json.js.map +0 -1
- package/dist/i18n/en/Payroll.TransitionCreation.json.js +0 -26
- package/dist/i18n/en/Payroll.TransitionCreation.json.js.map +0 -1
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +0 -1
- package/dist/src/components/Payroll/PayrollFlow/TransitionFlowContextual.d.ts +0 -7
- package/dist/src/components/Payroll/Transition/TransitionFlow.d.ts +0 -55
- package/dist/src/components/Payroll/Transition/TransitionFlowComponents.d.ts +0 -52
- package/dist/src/components/Payroll/Transition/index.d.ts +0 -2
- package/dist/src/components/Payroll/Transition/transitionStateMachine.d.ts +0 -29
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreation.d.ts +0 -22
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +0 -9
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationTypes.d.ts +0 -57
- package/dist/src/components/Payroll/TransitionCreation/index.d.ts +0 -2
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayroll.d.ts +0 -55
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollComponents.d.ts +0 -24
- package/dist/src/components/Payroll/TransitionPayroll/TransitionPayrollTypes.d.ts +0 -23
- package/dist/src/components/Payroll/TransitionPayroll/index.d.ts +0 -2
- package/dist/src/components/Payroll/TransitionPayroll/transitionPayrollStateMachine.d.ts +0 -15
- package/dist/src/components/Payroll/TransitionPayroll/useResolveTransitionPayroll.d.ts +0 -28
- /package/dist/src/components/{Payroll/Transition/transitionStateMachine.test.d.ts → Common/DataView/getSortControls.test.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContractorAddressForm.js","sources":["../../../../../../src/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport type { ComponentType } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Contractor, ContractorType } from '@gusto/embedded-api/models/components/contractor'\nimport type { ContractorAddress } from '@gusto/embedded-api/models/components/contractoraddress'\nimport { useContractorsGet } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { useContractorsGetAddress } from '@gusto/embedded-api/react-query/contractorsGetAddress'\nimport { useContractorsUpdateAddressMutation } from '@gusto/embedded-api/react-query/contractorsUpdateAddress'\nimport {\n createContractorAddressSchema,\n type ContractorAddressOptionalFieldsToRequire,\n type ContractorAddressFormData,\n type ContractorAddressFormOutputs,\n} from './contractorAddressSchema'\nimport { Street1Field, Street2Field, CityField, StateField, ZipField } from './fields'\nimport type {\n Street1FieldProps,\n Street2FieldProps,\n CityFieldProps,\n StateFieldProps,\n ZipFieldProps,\n} from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { STATES_ABBR } from '@/shared/constants'\n\nexport type { ContractorAddressOptionalFieldsToRequire } from './contractorAddressSchema'\n\n/**\n * Optional overrides passed to {@link UseContractorAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @public\n */\nexport interface ContractorAddressSubmitOptions {\n /** Override the contractor identifier supplied to the hook. */\n contractorId?: string\n}\n\n/**\n * Configuration options for {@link useContractorAddressForm}.\n *\n * @public\n */\nexport interface UseContractorAddressFormProps {\n /** UUID of the contractor whose address is being edited. */\n contractorId: string\n /** Override fields that are optional by default to be required. See `ContractorAddressOptionalFieldsToRequire`. */\n optionalFieldsToRequire?: ContractorAddressOptionalFieldsToRequire\n /** Pre-fill form values. Server data takes precedence. */\n defaultValues?: Partial<ContractorAddressFormData>\n /** Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler` so submit-time focus is coordinated across multiple forms. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useContractorAddressForm} on `form.Fields`.\n *\n * @public\n */\nexport interface ContractorAddressFormFields {\n /** Bound to `street1`. Text input for the first street address line. Required. */\n Street1: ComponentType<Street1FieldProps>\n /** Bound to `street2`. Text input for the second street address line. Optional. */\n Street2: ComponentType<Street2FieldProps>\n /** Bound to `city`. Text input for the city. Required. */\n City: ComponentType<CityFieldProps>\n /**\n * Bound to `state`. Select whose options are the standard two-letter US state\n * abbreviations. Supply `getOptionLabel` to localize the option labels. Required.\n */\n State: ComponentType<StateFieldProps>\n /**\n * Bound to `zip`. Text input for the ZIP code. Required; also validates ZIP\n * format and emits `INVALID_ZIP` when the value does not match.\n */\n Zip: ComponentType<ZipFieldProps>\n}\n\n/**\n * Ready-state shape returned by {@link useContractorAddressForm} once data has loaded.\n *\n * @remarks\n * Discriminated by `isLoading: false`. Extends {@link BaseFormHookReady} with\n * the contractor-address-specific `data`, `status`, `actions`, and `form.Fields` shape.\n *\n * @public\n */\nexport interface UseContractorAddressFormReady extends BaseFormHookReady<\n ContractorAddressFieldsMetadata,\n ContractorAddressFormData,\n ContractorAddressFormFields\n> {\n /** Static entity data resolved from the API. */\n data: {\n /** The contractor address row loaded for update. */\n contractorAddress: ContractorAddress\n /** The full contractor entity loaded alongside the address. */\n contractor: Contractor\n /** The contractor's type — drives whether the address is labelled \"home\" (Individual) or \"business\" (Business). */\n contractorType: ContractorType | undefined\n }\n /** Reactive status flags. */\n status: { isPending: boolean; mode: 'update' }\n /** Available actions. */\n actions: {\n onSubmit: (\n options?: ContractorAddressSubmitOptions,\n ) => Promise<HookSubmitResult<ContractorAddress> | undefined>\n }\n}\n\n/** @internal */\nfunction buildContractorAddressFieldsMetadata(\n base: Record<keyof ContractorAddressFormData, FieldMetadata>,\n) {\n const stateOptions = STATES_ABBR.map(abbr => ({\n value: abbr,\n label: abbr,\n }))\n return {\n street1: base.street1,\n street2: base.street2,\n city: base.city,\n state: withOptions(base.state, stateOptions, STATES_ABBR),\n zip: base.zip,\n } satisfies FieldsMetadata\n}\n\n/**\n * Form hook for editing a contractor's address.\n *\n * @remarks\n * A contractor always has exactly one address (created with the contractor),\n * so this hook operates only in update mode and issues a PUT on submit. The\n * same address is labelled a \"home\" address for Individual contractors and a\n * \"business\" address for Business contractors; the hook exposes `contractorType`\n * so the consuming component can choose the appropriate copy.\n *\n * @param props - See {@link UseContractorAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseContractorAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useContractorAddressForm,\n * SDKFormProvider,\n * type UseContractorAddressFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function ContractorAddressPage({ contractorId }: { contractorId: string }) {\n * const contractorAddress = useContractorAddressForm({ contractorId })\n *\n * if (contractorAddress.isLoading) return <div>Loading...</div>\n *\n * return <ContractorAddressReady contractorAddress={contractorAddress} />\n * }\n *\n * function ContractorAddressReady({\n * contractorAddress,\n * }: {\n * contractorAddress: UseContractorAddressFormReady\n * }) {\n * const { Fields } = contractorAddress.form\n *\n * return (\n * <SDKFormProvider formHookResult={contractorAddress}>\n * <form onSubmit={e => { e.preventDefault(); void contractorAddress.actions.onSubmit() }}>\n * <Fields.Street1 label=\"Street address\" />\n * <Fields.Street2 label=\"Apt, suite, etc. (optional)\" />\n * <Fields.City label=\"City\" />\n * <Fields.State label=\"State\" />\n * <Fields.Zip label=\"ZIP code\" />\n * <button type=\"submit\" disabled={contractorAddress.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useContractorAddressForm({\n contractorId,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseContractorAddressFormProps): HookLoadingResult | UseContractorAddressFormReady {\n const contractorQuery = useContractorsGet(\n { contractorUuid: contractorId },\n { enabled: !!contractorId },\n )\n const addressQuery = useContractorsGetAddress(\n { contractorUuid: contractorId },\n { enabled: !!contractorId },\n )\n\n const contractor = contractorQuery.data?.contractor\n const contractorType = contractor?.type\n const fetchedAddress = addressQuery.data?.contractorAddress\n\n const [schema, metadataConfig] = useMemo(\n () => createContractorAddressSchema({ optionalFieldsToRequire }),\n [optionalFieldsToRequire],\n )\n\n const resolvedDefaults: ContractorAddressFormData = useMemo(\n () => ({\n street1: fetchedAddress?.street1 ?? partnerDefaults?.street1 ?? '',\n street2: fetchedAddress?.street2 ?? partnerDefaults?.street2 ?? '',\n city: fetchedAddress?.city ?? partnerDefaults?.city ?? '',\n state: fetchedAddress?.state ?? partnerDefaults?.state ?? '',\n zip: fetchedAddress?.zip ?? partnerDefaults?.zip ?? '',\n }),\n [fetchedAddress, partnerDefaults],\n )\n\n const formMethods = useForm<ContractorAddressFormData, unknown, ContractorAddressFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const updateAddressMutation = useContractorsUpdateAddressMutation()\n\n const isPending = updateAddressMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('ContractorAddressForm')\n\n const errorHandling = composeErrorHandler([contractorQuery, addressQuery], {\n submitError,\n setSubmitError,\n })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildContractorAddressFieldsMetadata(baseMetadata)\n\n const onSubmit = async (\n options?: ContractorAddressSubmitOptions,\n ): Promise<HookSubmitResult<ContractorAddress> | undefined> => {\n let submitResult: HookSubmitResult<ContractorAddress> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: ContractorAddressFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const resolvedContractorId = options?.contractorId ?? contractorId\n\n if (!fetchedAddress?.version) {\n throw new SDKInternalError(\n 'Cannot update contractor address: no matching address on file',\n )\n }\n\n const result = await updateAddressMutation.mutateAsync({\n request: {\n contractorUuid: resolvedContractorId,\n contractorAddressUpdateBody: {\n version: fetchedAddress.version,\n street1: payload.street1,\n street2: payload.street2 || undefined,\n city: payload.city,\n state: payload.state,\n zip: payload.zip,\n },\n },\n })\n\n if (!result.contractorAddress) {\n throw new SDKInternalError('Contractor address update failed')\n }\n\n submitResult = {\n mode: 'update',\n data: result.contractorAddress,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (!contractor || !fetchedAddress) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n contractorAddress: fetchedAddress,\n contractor,\n contractorType,\n },\n status: {\n isPending,\n mode: 'update' as const,\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Street1: Street1Field,\n Street2: Street2Field,\n City: CityField,\n State: StateField,\n Zip: ZipField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Discriminated union returned by {@link useContractorAddressForm}.\n *\n * @public\n */\nexport type UseContractorAddressFormResult = HookLoadingResult | UseContractorAddressFormReady\n/**\n * Type of `form.fieldsMetadata` returned by {@link useContractorAddressForm}.\n *\n * @public\n */\nexport type ContractorAddressFieldsMetadata = ReturnType<\n typeof buildContractorAddressFieldsMetadata\n>\n"],"names":["buildContractorAddressFieldsMetadata","base","stateOptions","STATES_ABBR","abbr","withOptions","useContractorAddressForm","contractorId","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","contractorQuery","useContractorsGet","addressQuery","useContractorsGetAddress","contractor","contractorType","fetchedAddress","schema","metadataConfig","useMemo","createContractorAddressSchema","resolvedDefaults","formMethods","useForm","zodResolver","updateAddressMutation","useContractorsUpdateAddressMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","options","submitResult","resolve","data","payload","resolvedContractorId","SDKInternalError","result","hookFormInternals","useHookFormInternals","Street1Field","Street2Field","CityField","StateField","ZipField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useContractorAddressForm.js","sources":["../../../../../../src/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport type { ComponentType } from 'react'\nimport { useForm } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Contractor, ContractorType } from '@gusto/embedded-api/models/components/contractor'\nimport type { ContractorAddress } from '@gusto/embedded-api/models/components/contractoraddress'\nimport { useContractorsGet } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { useContractorsGetAddress } from '@gusto/embedded-api/react-query/contractorsGetAddress'\nimport { useContractorsUpdateAddressMutation } from '@gusto/embedded-api/react-query/contractorsUpdateAddress'\nimport {\n createContractorAddressSchema,\n type ContractorAddressOptionalFieldsToRequire,\n type ContractorAddressFormData,\n type ContractorAddressFormOutputs,\n} from './contractorAddressSchema'\nimport { Street1Field, Street2Field, CityField, StateField, ZipField } from './fields'\nimport type {\n Street1FieldProps,\n Street2FieldProps,\n CityFieldProps,\n StateFieldProps,\n ZipFieldProps,\n} from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { STATES_ABBR } from '@/shared/constants'\n\nexport type { ContractorAddressOptionalFieldsToRequire } from './contractorAddressSchema'\n\n/**\n * Optional overrides passed to {@link UseContractorAddressFormReady.actions.onSubmit | onSubmit}.\n *\n * @public\n */\nexport interface ContractorAddressSubmitOptions {\n /** Override the contractor identifier supplied to the hook. */\n contractorId?: string\n}\n\n/**\n * Configuration options for {@link useContractorAddressForm}.\n *\n * @public\n */\nexport interface UseContractorAddressFormProps {\n /** UUID of the contractor whose address is being edited. */\n contractorId: string\n /** Override fields that are optional by default to be required. See `ContractorAddressOptionalFieldsToRequire`. */\n optionalFieldsToRequire?: ContractorAddressOptionalFieldsToRequire\n /** Pre-fill form values. Server data takes precedence. */\n defaultValues?: Partial<ContractorAddressFormData>\n /** Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler` so submit-time focus is coordinated across multiple forms. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useContractorAddressForm} on `form.Fields`.\n *\n * @public\n */\nexport interface ContractorAddressFormFields {\n /** Bound to `street1`. Text input for the first street address line. Required. */\n Street1: ComponentType<Street1FieldProps>\n /** Bound to `street2`. Text input for the second street address line. Optional. */\n Street2: ComponentType<Street2FieldProps>\n /** Bound to `city`. Text input for the city. Required. */\n City: ComponentType<CityFieldProps>\n /**\n * Bound to `state`. Select whose options are the standard two-letter US state\n * abbreviations. Supply `getOptionLabel` to localize the option labels. Required.\n */\n State: ComponentType<StateFieldProps>\n /**\n * Bound to `zip`. Text input for the ZIP code. Required; also validates ZIP\n * format and emits `INVALID_ZIP` when the value does not match.\n */\n Zip: ComponentType<ZipFieldProps>\n}\n\n/**\n * Ready-state shape returned by {@link useContractorAddressForm} once data has loaded.\n *\n * @remarks\n * Discriminated by `isLoading: false`. Extends {@link BaseFormHookReady} with\n * the contractor-address-specific `data`, `status`, `actions`, and `form.Fields` shape.\n *\n * @public\n */\nexport interface UseContractorAddressFormReady extends BaseFormHookReady<\n ContractorAddressFieldsMetadata,\n ContractorAddressFormData,\n ContractorAddressFormFields\n> {\n /** Static entity data resolved from the API. */\n data: {\n /** The contractor address row loaded for update. */\n contractorAddress: ContractorAddress\n /** The full contractor entity loaded alongside the address. */\n contractor: Contractor\n /** The contractor's type — drives whether the address is labelled \"home\" (Individual) or \"business\" (Business). */\n contractorType: ContractorType | undefined\n }\n /** Reactive status flags. */\n status: { isPending: boolean; mode: 'update' }\n /** Available actions. */\n actions: {\n onSubmit: (\n options?: ContractorAddressSubmitOptions,\n ) => Promise<HookSubmitResult<ContractorAddress> | undefined>\n }\n}\n\n/** @internal */\nfunction buildContractorAddressFieldsMetadata(\n base: Record<keyof ContractorAddressFormData, FieldMetadata>,\n) {\n const stateOptions = STATES_ABBR.map(abbr => ({\n value: abbr,\n label: abbr,\n }))\n return {\n street1: base.street1,\n street2: base.street2,\n city: base.city,\n state: withOptions(base.state, stateOptions, STATES_ABBR),\n zip: base.zip,\n } satisfies FieldsMetadata\n}\n\n/**\n * Form hook for editing a contractor's address.\n *\n * @remarks\n * A contractor always has exactly one address (created with the contractor),\n * so this hook operates only in update mode and issues a PUT on submit. The\n * same address is labelled a \"home\" address for Individual contractors and a\n * \"business\" address for Business contractors; the hook exposes `contractorType`\n * so the consuming component can choose the appropriate copy.\n *\n * @param props - See {@link UseContractorAddressFormProps}.\n * @returns A {@link HookLoadingResult} while loading, or a {@link UseContractorAddressFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import {\n * useContractorAddressForm,\n * SDKFormProvider,\n * type UseContractorAddressFormReady,\n * } from '@gusto/embedded-react-sdk'\n *\n * function ContractorAddressPage({ contractorId }: { contractorId: string }) {\n * const contractorAddress = useContractorAddressForm({ contractorId })\n *\n * if (contractorAddress.isLoading) return <div>Loading...</div>\n *\n * return <ContractorAddressReady contractorAddress={contractorAddress} />\n * }\n *\n * function ContractorAddressReady({\n * contractorAddress,\n * }: {\n * contractorAddress: UseContractorAddressFormReady\n * }) {\n * const { Fields } = contractorAddress.form\n *\n * return (\n * <SDKFormProvider formHookResult={contractorAddress}>\n * <form onSubmit={e => { e.preventDefault(); void contractorAddress.actions.onSubmit() }}>\n * <Fields.Street1 label=\"Street address\" />\n * <Fields.Street2 label=\"Apt, suite, etc. (optional)\" />\n * <Fields.City label=\"City\" />\n * <Fields.State label=\"State\" />\n * <Fields.Zip label=\"ZIP code\" />\n * <button type=\"submit\" disabled={contractorAddress.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useContractorAddressForm({\n contractorId,\n optionalFieldsToRequire,\n defaultValues: partnerDefaults,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseContractorAddressFormProps): HookLoadingResult | UseContractorAddressFormReady {\n const contractorQuery = useContractorsGet(\n { contractorUuid: contractorId },\n { enabled: !!contractorId },\n )\n const addressQuery = useContractorsGetAddress(\n { contractorUuid: contractorId },\n { enabled: !!contractorId },\n )\n\n const contractor = contractorQuery.data?.contractorShow\n const contractorType = contractor?.type\n const fetchedAddress = addressQuery.data?.contractorAddress\n\n const [schema, metadataConfig] = useMemo(\n () => createContractorAddressSchema({ optionalFieldsToRequire }),\n [optionalFieldsToRequire],\n )\n\n const resolvedDefaults: ContractorAddressFormData = useMemo(\n () => ({\n street1: fetchedAddress?.street1 ?? partnerDefaults?.street1 ?? '',\n street2: fetchedAddress?.street2 ?? partnerDefaults?.street2 ?? '',\n city: fetchedAddress?.city ?? partnerDefaults?.city ?? '',\n state: fetchedAddress?.state ?? partnerDefaults?.state ?? '',\n zip: fetchedAddress?.zip ?? partnerDefaults?.zip ?? '',\n }),\n [fetchedAddress, partnerDefaults],\n )\n\n const formMethods = useForm<ContractorAddressFormData, unknown, ContractorAddressFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const updateAddressMutation = useContractorsUpdateAddressMutation()\n\n const isPending = updateAddressMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('ContractorAddressForm')\n\n const errorHandling = composeErrorHandler([contractorQuery, addressQuery], {\n submitError,\n setSubmitError,\n })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildContractorAddressFieldsMetadata(baseMetadata)\n\n const onSubmit = async (\n options?: ContractorAddressSubmitOptions,\n ): Promise<HookSubmitResult<ContractorAddress> | undefined> => {\n let submitResult: HookSubmitResult<ContractorAddress> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: ContractorAddressFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const resolvedContractorId = options?.contractorId ?? contractorId\n\n if (!fetchedAddress?.version) {\n throw new SDKInternalError(\n 'Cannot update contractor address: no matching address on file',\n )\n }\n\n const result = await updateAddressMutation.mutateAsync({\n request: {\n contractorUuid: resolvedContractorId,\n contractorAddressUpdateBody: {\n version: fetchedAddress.version,\n street1: payload.street1,\n street2: payload.street2 || undefined,\n city: payload.city,\n state: payload.state,\n zip: payload.zip,\n },\n },\n })\n\n if (!result.contractorAddress) {\n throw new SDKInternalError('Contractor address update failed')\n }\n\n submitResult = {\n mode: 'update',\n data: result.contractorAddress,\n }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (!contractor || !fetchedAddress) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: {\n contractorAddress: fetchedAddress,\n contractor,\n contractorType,\n },\n status: {\n isPending,\n mode: 'update' as const,\n },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n Street1: Street1Field,\n Street2: Street2Field,\n City: CityField,\n State: StateField,\n Zip: ZipField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Discriminated union returned by {@link useContractorAddressForm}.\n *\n * @public\n */\nexport type UseContractorAddressFormResult = HookLoadingResult | UseContractorAddressFormReady\n/**\n * Type of `form.fieldsMetadata` returned by {@link useContractorAddressForm}.\n *\n * @public\n */\nexport type ContractorAddressFieldsMetadata = ReturnType<\n typeof buildContractorAddressFieldsMetadata\n>\n"],"names":["buildContractorAddressFieldsMetadata","base","stateOptions","STATES_ABBR","abbr","withOptions","useContractorAddressForm","contractorId","optionalFieldsToRequire","partnerDefaults","validationMode","shouldFocusError","contractorQuery","useContractorsGet","addressQuery","useContractorsGetAddress","contractor","contractorType","fetchedAddress","schema","metadataConfig","useMemo","createContractorAddressSchema","resolvedDefaults","formMethods","useForm","zodResolver","updateAddressMutation","useContractorsUpdateAddressMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","options","submitResult","resolve","data","payload","resolvedContractorId","SDKInternalError","result","hookFormInternals","useHookFormInternals","Street1Field","Street2Field","CityField","StateField","ZipField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ function f({
|
|
|
10
10
|
), r = a(
|
|
11
11
|
{ contractorUuid: o },
|
|
12
12
|
{ staleTime: 1 / 0 }
|
|
13
|
-
), s = c([t, r]), n = r.data?.contractorAddress, e = t.data?.
|
|
13
|
+
), s = c([t, r]), n = r.data?.contractorAddress, e = t.data?.contractorShow?.type;
|
|
14
14
|
return t.isLoading || r.isLoading || !n ? { isLoading: !0, errorHandling: s } : {
|
|
15
15
|
isLoading: !1,
|
|
16
16
|
data: { contractorAddress: n, contractorType: e },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContractorAddressSummary.js","sources":["../../../../../../src/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.tsx"],"sourcesContent":["import { useContractorsGet } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { useContractorsGetAddress } from '@gusto/embedded-api/react-query/contractorsGetAddress'\nimport type { ContractorType } from '@gusto/embedded-api/models/components/contractor'\nimport type { ContractorAddress } from '@gusto/embedded-api/models/components/contractoraddress'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type { BaseHookReady, HookLoadingResult } from '@/partner-hook-utils/types'\n\n/** @internal */\nexport interface UseContractorAddressSummaryParams {\n contractorId: string\n}\n\ntype UseContractorAddressSummaryReady = BaseHookReady<\n {\n contractorAddress: ContractorAddress\n contractorType: ContractorType | undefined\n },\n { isFetching: boolean; isPending: boolean }\n>\n\n/** @internal */\nexport type UseContractorAddressSummaryResult = HookLoadingResult | UseContractorAddressSummaryReady\n\n/** @internal */\nexport function useContractorAddressSummary({\n contractorId,\n}: UseContractorAddressSummaryParams): UseContractorAddressSummaryResult {\n const contractorQuery = useContractorsGet(\n { contractorUuid: contractorId },\n { staleTime: Infinity },\n )\n const addressQuery = useContractorsGetAddress(\n { contractorUuid: contractorId },\n { staleTime: Infinity },\n )\n\n const errorHandling = composeErrorHandler([contractorQuery, addressQuery])\n\n const contractorAddress = addressQuery.data?.contractorAddress\n const contractorType = contractorQuery.data?.
|
|
1
|
+
{"version":3,"file":"useContractorAddressSummary.js","sources":["../../../../../../src/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.tsx"],"sourcesContent":["import { useContractorsGet } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { useContractorsGetAddress } from '@gusto/embedded-api/react-query/contractorsGetAddress'\nimport type { ContractorType } from '@gusto/embedded-api/models/components/contractor'\nimport type { ContractorAddress } from '@gusto/embedded-api/models/components/contractoraddress'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type { BaseHookReady, HookLoadingResult } from '@/partner-hook-utils/types'\n\n/** @internal */\nexport interface UseContractorAddressSummaryParams {\n contractorId: string\n}\n\ntype UseContractorAddressSummaryReady = BaseHookReady<\n {\n contractorAddress: ContractorAddress\n contractorType: ContractorType | undefined\n },\n { isFetching: boolean; isPending: boolean }\n>\n\n/** @internal */\nexport type UseContractorAddressSummaryResult = HookLoadingResult | UseContractorAddressSummaryReady\n\n/** @internal */\nexport function useContractorAddressSummary({\n contractorId,\n}: UseContractorAddressSummaryParams): UseContractorAddressSummaryResult {\n const contractorQuery = useContractorsGet(\n { contractorUuid: contractorId },\n { staleTime: Infinity },\n )\n const addressQuery = useContractorsGetAddress(\n { contractorUuid: contractorId },\n { staleTime: Infinity },\n )\n\n const errorHandling = composeErrorHandler([contractorQuery, addressQuery])\n\n const contractorAddress = addressQuery.data?.contractorAddress\n const contractorType = contractorQuery.data?.contractorShow?.type\n\n if (contractorQuery.isLoading || addressQuery.isLoading || !contractorAddress) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { contractorAddress, contractorType },\n status: {\n isFetching: contractorQuery.isFetching || addressQuery.isFetching,\n isPending: false,\n },\n errorHandling,\n }\n}\n"],"names":["useContractorAddressSummary","contractorId","contractorQuery","useContractorsGet","addressQuery","useContractorsGetAddress","errorHandling","composeErrorHandler","contractorAddress","contractorType"],"mappings":";;;AAwBO,SAASA,EAA4B;AAAA,EAC1C,cAAAC;AACF,GAAyE;AACvE,QAAMC,IAAkBC;AAAA,IACtB,EAAE,gBAAgBF,EAAA;AAAA,IAClB,EAAE,WAAW,MAAA;AAAA,EAAS,GAElBG,IAAeC;AAAA,IACnB,EAAE,gBAAgBJ,EAAA;AAAA,IAClB,EAAE,WAAW,MAAA;AAAA,EAAS,GAGlBK,IAAgBC,EAAoB,CAACL,GAAiBE,CAAY,CAAC,GAEnEI,IAAoBJ,EAAa,MAAM,mBACvCK,IAAiBP,EAAgB,MAAM,gBAAgB;AAE7D,SAAIA,EAAgB,aAAaE,EAAa,aAAa,CAACI,IACnD,EAAE,WAAW,IAAM,eAAAF,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,mBAAAE,GAAmB,gBAAAC,EAAA;AAAA,IAC3B,QAAQ;AAAA,MACN,YAAYP,EAAgB,cAAcE,EAAa;AAAA,MACvD,WAAW;AAAA,IAAA;AAAA,IAEb,eAAAE;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useTranslation as
|
|
3
|
-
import
|
|
4
|
-
import { useContractorPayForm as
|
|
5
|
-
import { WageType as
|
|
6
|
-
import
|
|
7
|
-
import { BaseBoundaries as
|
|
1
|
+
import { jsx as r, jsxs as s } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation as g } from "react-i18next";
|
|
3
|
+
import h from "classnames";
|
|
4
|
+
import { useContractorPayForm as T } from "../shared/useContractorPayForm/useContractorPayForm.js";
|
|
5
|
+
import { WageType as u } from "../shared/useContractorPayForm/contractorPaySchema.js";
|
|
6
|
+
import E from "./CompensationEditForm.module.scss.js";
|
|
7
|
+
import { BaseBoundaries as N, 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 D, useComponentDictionary as
|
|
14
|
-
import { componentEvents as
|
|
9
|
+
import { Flex as R } from "../../../Common/Flex/Flex.js";
|
|
10
|
+
import { ActionsLayout as A } from "../../../Common/ActionsLayout/ActionsLayout.js";
|
|
11
|
+
import { Form as M } from "../../../Common/Form/Form.js";
|
|
12
|
+
import { SDKFormProvider as b } from "../../../../partner-hook-utils/form/SDKFormProvider.js";
|
|
13
|
+
import { useI18n as D, useComponentDictionary as L } from "../../../../i18n/I18n.js";
|
|
14
|
+
import { componentEvents as d } from "../../../../shared/constants.js";
|
|
15
15
|
import { useComponentContext as O } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
16
|
-
function
|
|
16
|
+
function Q({
|
|
17
17
|
FallbackComponent: a,
|
|
18
|
-
LoaderComponent:
|
|
18
|
+
LoaderComponent: e,
|
|
19
19
|
...m
|
|
20
20
|
}) {
|
|
21
|
-
return /* @__PURE__ */
|
|
22
|
-
|
|
21
|
+
return /* @__PURE__ */ r(
|
|
22
|
+
N,
|
|
23
23
|
{
|
|
24
24
|
componentName: "Contractor.Management.Compensation",
|
|
25
25
|
FallbackComponent: a,
|
|
26
|
-
LoaderComponent:
|
|
27
|
-
children: /* @__PURE__ */
|
|
26
|
+
LoaderComponent: e,
|
|
27
|
+
children: /* @__PURE__ */ r(x, { LoaderComponent: e, ...m })
|
|
28
28
|
}
|
|
29
29
|
);
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function x({
|
|
32
32
|
contractorId: a,
|
|
33
|
-
className:
|
|
33
|
+
className: e,
|
|
34
34
|
dictionary: m,
|
|
35
35
|
onEvent: l,
|
|
36
36
|
LoaderComponent: c
|
|
37
37
|
}) {
|
|
38
|
-
D("Contractor.Management.Compensation"),
|
|
39
|
-
const { t:
|
|
38
|
+
D("Contractor.Management.Compensation"), L("Contractor.Management.Compensation", m);
|
|
39
|
+
const { t: o } = g("Contractor.Management.Compensation"), i = O(), t = T({ contractorId: a });
|
|
40
40
|
if (t.isLoading)
|
|
41
|
-
return /* @__PURE__ */
|
|
41
|
+
return /* @__PURE__ */ r(
|
|
42
42
|
f,
|
|
43
43
|
{
|
|
44
44
|
isLoading: !0,
|
|
@@ -46,52 +46,43 @@ function H({
|
|
|
46
46
|
LoaderComponent: c
|
|
47
47
|
}
|
|
48
48
|
);
|
|
49
|
-
const { Fields: p } = t.form,
|
|
49
|
+
const { Fields: p } = t.form, C = async () => {
|
|
50
50
|
const n = await t.actions.onSubmit();
|
|
51
|
-
n && l(
|
|
52
|
-
},
|
|
53
|
-
l(
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
{
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
...u,
|
|
60
|
-
description: u.value === d.Hourly ? r("form.hourlyDescription") : r("form.fixedDescription")
|
|
61
|
-
}))
|
|
62
|
-
}
|
|
63
|
-
);
|
|
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
|
-
/* @__PURE__ */ o(e.Heading, { as: "h2", children: r("form.title") }),
|
|
67
|
-
/* @__PURE__ */ o(e.Text, { variant: "supporting", children: r("form.description") })
|
|
51
|
+
n && l(d.CONTRACTOR_MANAGEMENT_COMPENSATION_UPDATED, n.data);
|
|
52
|
+
}, y = () => {
|
|
53
|
+
l(d.CONTRACTOR_MANAGEMENT_COMPENSATION_EDIT_CANCELLED);
|
|
54
|
+
};
|
|
55
|
+
return /* @__PURE__ */ r("section", { className: h(E.container, e), children: /* @__PURE__ */ r(f, { error: t.errorHandling.errors, LoaderComponent: c, children: /* @__PURE__ */ r(b, { formHookResult: t, children: /* @__PURE__ */ s(M, { onSubmit: C, children: [
|
|
56
|
+
/* @__PURE__ */ s(R, { flexDirection: "column", gap: 4, children: [
|
|
57
|
+
/* @__PURE__ */ r(i.Heading, { as: "h2", children: o("form.title") }),
|
|
58
|
+
/* @__PURE__ */ r(i.Text, { variant: "supporting", children: o("form.description") })
|
|
68
59
|
] }),
|
|
69
|
-
/* @__PURE__ */
|
|
60
|
+
/* @__PURE__ */ r(
|
|
70
61
|
p.WageType,
|
|
71
62
|
{
|
|
72
|
-
label:
|
|
73
|
-
getOptionLabel: (n) => n ===
|
|
74
|
-
|
|
63
|
+
label: o("form.wageTypeLabel"),
|
|
64
|
+
getOptionLabel: (n) => n === u.Hourly ? o("hourlyLabel") : o("fixedLabel"),
|
|
65
|
+
getOptionDescription: (n) => n === u.Hourly ? o("form.hourlyDescription") : o("form.fixedDescription")
|
|
75
66
|
}
|
|
76
67
|
),
|
|
77
|
-
t.status.isHourly && /* @__PURE__ */
|
|
68
|
+
t.status.isHourly && /* @__PURE__ */ r(
|
|
78
69
|
p.HourlyRate,
|
|
79
70
|
{
|
|
80
|
-
label:
|
|
71
|
+
label: o("form.hourlyRateLabel"),
|
|
81
72
|
format: "currency",
|
|
82
73
|
validationMessages: {
|
|
83
|
-
REQUIRED:
|
|
84
|
-
MAX_HOURLY_RATE:
|
|
74
|
+
REQUIRED: o("form.validations.hourlyRate"),
|
|
75
|
+
MAX_HOURLY_RATE: o("form.validations.hourlyRateMax")
|
|
85
76
|
}
|
|
86
77
|
}
|
|
87
78
|
),
|
|
88
|
-
/* @__PURE__ */ s(
|
|
89
|
-
/* @__PURE__ */
|
|
90
|
-
/* @__PURE__ */
|
|
79
|
+
/* @__PURE__ */ s(A, { children: [
|
|
80
|
+
/* @__PURE__ */ r(i.Button, { variant: "secondary", onClick: y, type: "button", children: o("form.cancelCta") }),
|
|
81
|
+
/* @__PURE__ */ r(i.Button, { type: "submit", isLoading: t.status.isPending, children: o("form.saveCta") })
|
|
91
82
|
] })
|
|
92
83
|
] }) }) }) });
|
|
93
84
|
}
|
|
94
85
|
export {
|
|
95
|
-
|
|
86
|
+
Q as CompensationEditForm
|
|
96
87
|
};
|
|
97
88
|
//# 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'\
|
|
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'\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 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 getOptionDescription={(value: string) =>\n value === WageType.Hourly ? t('form.hourlyDescription') : t('form.fixedDescription')\n }\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","classNames","styles","SDKFormProvider","jsxs","Form","Flex","value","WageType","ActionsLayout"],"mappings":"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"}
|
|
@@ -6,15 +6,15 @@ function c({
|
|
|
6
6
|
const t = i(
|
|
7
7
|
{ contractorUuid: n },
|
|
8
8
|
{ staleTime: 1 / 0 }
|
|
9
|
-
),
|
|
10
|
-
return t.isLoading || !
|
|
9
|
+
), o = a([t]), r = t.data?.contractorShow;
|
|
10
|
+
return t.isLoading || !r ? { isLoading: !0, errorHandling: o } : {
|
|
11
11
|
isLoading: !1,
|
|
12
|
-
data: { contractor:
|
|
12
|
+
data: { contractor: r },
|
|
13
13
|
status: {
|
|
14
14
|
isFetching: t.isFetching,
|
|
15
15
|
isPending: !1
|
|
16
16
|
},
|
|
17
|
-
errorHandling:
|
|
17
|
+
errorHandling: o
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContractorCompensationSummary.js","sources":["../../../../../../src/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.tsx"],"sourcesContent":["import { useContractorsGet } from '@gusto/embedded-api/react-query/contractorsGet'\nimport type { Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type { BaseHookReady, HookLoadingResult } from '@/partner-hook-utils/types'\n\n/** @internal */\nexport interface UseContractorCompensationSummaryParams {\n contractorId: string\n}\n\ntype UseContractorCompensationSummaryReady = BaseHookReady<\n { contractor: Contractor },\n { isFetching: boolean; isPending: boolean }\n>\n\n/** @internal */\nexport type UseContractorCompensationSummaryResult =\n HookLoadingResult | UseContractorCompensationSummaryReady\n\n/** @internal */\nexport function useContractorCompensationSummary({\n contractorId,\n}: UseContractorCompensationSummaryParams): UseContractorCompensationSummaryResult {\n const contractorQuery = useContractorsGet(\n { contractorUuid: contractorId },\n { staleTime: Infinity },\n )\n\n const errorHandling = composeErrorHandler([contractorQuery])\n\n const contractor = contractorQuery.data?.
|
|
1
|
+
{"version":3,"file":"useContractorCompensationSummary.js","sources":["../../../../../../src/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.tsx"],"sourcesContent":["import { useContractorsGet } from '@gusto/embedded-api/react-query/contractorsGet'\nimport type { Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type { BaseHookReady, HookLoadingResult } from '@/partner-hook-utils/types'\n\n/** @internal */\nexport interface UseContractorCompensationSummaryParams {\n contractorId: string\n}\n\ntype UseContractorCompensationSummaryReady = BaseHookReady<\n { contractor: Contractor },\n { isFetching: boolean; isPending: boolean }\n>\n\n/** @internal */\nexport type UseContractorCompensationSummaryResult =\n HookLoadingResult | UseContractorCompensationSummaryReady\n\n/** @internal */\nexport function useContractorCompensationSummary({\n contractorId,\n}: UseContractorCompensationSummaryParams): UseContractorCompensationSummaryResult {\n const contractorQuery = useContractorsGet(\n { contractorUuid: contractorId },\n { staleTime: Infinity },\n )\n\n const errorHandling = composeErrorHandler([contractorQuery])\n\n const contractor = contractorQuery.data?.contractorShow\n\n if (contractorQuery.isLoading || !contractor) {\n return { isLoading: true, errorHandling }\n }\n\n return {\n isLoading: false,\n data: { contractor },\n status: {\n isFetching: contractorQuery.isFetching,\n isPending: false,\n },\n errorHandling,\n }\n}\n"],"names":["useContractorCompensationSummary","contractorId","contractorQuery","useContractorsGet","errorHandling","composeErrorHandler","contractor"],"mappings":";;AAoBO,SAASA,EAAiC;AAAA,EAC/C,cAAAC;AACF,GAAmF;AACjF,QAAMC,IAAkBC;AAAA,IACtB,EAAE,gBAAgBF,EAAA;AAAA,IAClB,EAAE,WAAW,MAAA;AAAA,EAAS,GAGlBG,IAAgBC,EAAoB,CAACH,CAAe,CAAC,GAErDI,IAAaJ,EAAgB,MAAM;AAEzC,SAAIA,EAAgB,aAAa,CAACI,IACzB,EAAE,WAAW,IAAM,eAAAF,EAAA,IAGrB;AAAA,IACL,WAAW;AAAA,IACX,MAAM,EAAE,YAAAE,EAAA;AAAA,IACR,QAAQ;AAAA,MACN,YAAYJ,EAAgB;AAAA,MAC5B,WAAW;AAAA,IAAA;AAAA,IAEb,eAAAE;AAAA,EAAA;AAEJ;"}
|
package/dist/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.js
CHANGED
|
@@ -1,36 +1,31 @@
|
|
|
1
|
-
import { z as
|
|
1
|
+
import { z as t } from "zod";
|
|
2
2
|
import { ContractorWageType as R } from "@gusto/embedded-api/models/components/contractor";
|
|
3
|
+
import { createHourlyRateValidator as u } from "../../../shared/hourlyRate.js";
|
|
3
4
|
import { buildFormSchema as m } from "../../../../../partner-hook-utils/form/buildFormSchema.js";
|
|
4
|
-
|
|
5
|
-
const o = R, r = {
|
|
5
|
+
const e = R, o = {
|
|
6
6
|
REQUIRED: "REQUIRED",
|
|
7
7
|
MAX_HOURLY_RATE: "MAX_HOURLY_RATE"
|
|
8
|
-
},
|
|
9
|
-
wageType:
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
// when Hourly" rule lives in the superRefine below instead.
|
|
13
|
-
hourlyRate: e.preprocess(
|
|
14
|
-
s(0),
|
|
15
|
-
e.number().min(0).max(c, { message: r.MAX_HOURLY_RATE })
|
|
16
|
-
)
|
|
8
|
+
}, d = {
|
|
9
|
+
wageType: t.enum([e.Fixed, e.Hourly]),
|
|
10
|
+
// The "must be > 0 when Hourly" rule lives in the superRefine below instead.
|
|
11
|
+
hourlyRate: u(o.MAX_HOURLY_RATE)
|
|
17
12
|
};
|
|
18
|
-
function
|
|
19
|
-
return m(
|
|
20
|
-
requiredErrorCode:
|
|
13
|
+
function p() {
|
|
14
|
+
return m(d, {
|
|
15
|
+
requiredErrorCode: o.REQUIRED,
|
|
21
16
|
mode: "update",
|
|
22
|
-
superRefine: (
|
|
23
|
-
|
|
24
|
-
code:
|
|
17
|
+
superRefine: (r, a) => {
|
|
18
|
+
r.wageType === e.Hourly && !(r.hourlyRate > 0) && a.addIssue({
|
|
19
|
+
code: t.ZodIssueCode.custom,
|
|
25
20
|
path: ["hourlyRate"],
|
|
26
|
-
message:
|
|
21
|
+
message: o.REQUIRED
|
|
27
22
|
});
|
|
28
23
|
}
|
|
29
24
|
});
|
|
30
25
|
}
|
|
31
26
|
export {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
o as ContractorPayErrorCodes,
|
|
28
|
+
e as WageType,
|
|
29
|
+
p as createContractorPaySchema
|
|
35
30
|
};
|
|
36
31
|
//# sourceMappingURL=contractorPaySchema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractorPaySchema.js","sources":["../../../../../../src/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport { ContractorWageType as ApiWageType } from '@gusto/embedded-api/models/components/contractor'\nimport {
|
|
1
|
+
{"version":3,"file":"contractorPaySchema.js","sources":["../../../../../../src/components/Contractor/Compensation/shared/useContractorPayForm/contractorPaySchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport { ContractorWageType as ApiWageType } from '@gusto/embedded-api/models/components/contractor'\nimport { createHourlyRateValidator } from '@/components/Contractor/shared/hourlyRate'\nimport { buildFormSchema } from '@/partner-hook-utils/form/buildFormSchema'\n\n/**\n * Contractor wage type enum (`Fixed` / `Hourly`) re-exported from the API model.\n *\n * @public\n */\nexport const WageType = ApiWageType\n\n/**\n * Validation error codes emitted by the contractor pay form schema. Map these\n * codes to localized copy in `validationMessages` when composing the hook.\n *\n * @public\n */\nexport const ContractorPayErrorCodes = {\n REQUIRED: 'REQUIRED',\n MAX_HOURLY_RATE: 'MAX_HOURLY_RATE',\n} as const\n\n/**\n * Union of validation error code strings emitted by the contractor pay form\n * schema.\n *\n * @public\n */\nexport type ContractorPayErrorCode =\n (typeof ContractorPayErrorCodes)[keyof typeof ContractorPayErrorCodes]\n\nconst fieldValidators = {\n wageType: z.enum([WageType.Fixed, WageType.Hourly]),\n // The \"must be > 0 when Hourly\" rule lives in the superRefine below instead.\n hourlyRate: createHourlyRateValidator(ContractorPayErrorCodes.MAX_HOURLY_RATE),\n}\n\n/**\n * Field names accepted by the contractor pay form.\n *\n * @public\n */\nexport type ContractorPayFormField = keyof typeof fieldValidators\n\n/**\n * Shape of the values managed by the contractor pay form.\n *\n * @public\n * @interface\n */\nexport type ContractorPayFormData = {\n [K in keyof typeof fieldValidators]: z.infer<(typeof fieldValidators)[K]>\n}\n\n/** @internal */\nexport type ContractorPayFormOutputs = ContractorPayFormData\n\n/** @internal */\nexport function createContractorPaySchema() {\n return buildFormSchema(fieldValidators, {\n requiredErrorCode: ContractorPayErrorCodes.REQUIRED,\n mode: 'update',\n superRefine: (data, ctx) => {\n if (data.wageType === WageType.Hourly && !(data.hourlyRate > 0)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['hourlyRate'],\n message: ContractorPayErrorCodes.REQUIRED,\n })\n }\n },\n })\n}\n"],"names":["WageType","ApiWageType","ContractorPayErrorCodes","fieldValidators","z","createHourlyRateValidator","createContractorPaySchema","buildFormSchema","data","ctx"],"mappings":";;;;AAUO,MAAMA,IAAWC,GAQXC,IAA0B;AAAA,EACrC,UAAU;AAAA,EACV,iBAAiB;AACnB,GAWMC,IAAkB;AAAA,EACtB,UAAUC,EAAE,KAAK,CAACJ,EAAS,OAAOA,EAAS,MAAM,CAAC;AAAA;AAAA,EAElD,YAAYK,EAA0BH,EAAwB,eAAe;AAC/E;AAuBO,SAASI,IAA4B;AAC1C,SAAOC,EAAgBJ,GAAiB;AAAA,IACtC,mBAAmBD,EAAwB;AAAA,IAC3C,MAAM;AAAA,IACN,aAAa,CAACM,GAAMC,MAAQ;AAC1B,MAAID,EAAK,aAAaR,EAAS,UAAU,EAAEQ,EAAK,aAAa,MAC3DC,EAAI,SAAS;AAAA,QACX,MAAML,EAAE,aAAa;AAAA,QACrB,MAAM,CAAC,YAAY;AAAA,QACnB,SAASF,EAAwB;AAAA,MAAA,CAClC;AAAA,IAEL;AAAA,EAAA,CACD;AACH;"}
|
package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js
CHANGED
|
@@ -24,7 +24,7 @@ function st({
|
|
|
24
24
|
validationMode: n = "onSubmit",
|
|
25
25
|
shouldFocusError: a = !0
|
|
26
26
|
}) {
|
|
27
|
-
const s = D({ contractorUuid: e }), t = s.data?.
|
|
27
|
+
const s = D({ contractorUuid: e }), t = s.data?.contractorShow, [u, w] = f(() => k(), []), c = f(
|
|
28
28
|
() => ({
|
|
29
29
|
wageType: t?.wageType ?? o.Fixed,
|
|
30
30
|
hourlyRate: t?.hourlyRate ? Number(t.hourlyRate) : 0
|
|
@@ -41,7 +41,7 @@ function st({
|
|
|
41
41
|
baseSubmitHandler: F,
|
|
42
42
|
error: T,
|
|
43
43
|
setError: R
|
|
44
|
-
} = A("ContractorPayForm"), d = z([s], { submitError: T, setSubmitError: R }),
|
|
44
|
+
} = A("ContractorPayForm"), d = z([s], { submitError: T, setSubmitError: R }), S = q(w, r.control), H = K(S), C = async () => {
|
|
45
45
|
if (!t?.version)
|
|
46
46
|
throw new g("Cannot submit pay form before contractor data is loaded");
|
|
47
47
|
const M = t.version, P = t.type;
|
|
@@ -83,7 +83,7 @@ function st({
|
|
|
83
83
|
WageType: O,
|
|
84
84
|
HourlyRate: L
|
|
85
85
|
},
|
|
86
|
-
fieldsMetadata:
|
|
86
|
+
fieldsMetadata: H,
|
|
87
87
|
hookFormInternals: v,
|
|
88
88
|
getFormSubmissionValues: G(r, u)
|
|
89
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContractorPayForm.js","sources":["../../../../../../src/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm, useWatch } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport { useContractorsGet } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { useContractorsUpdateMutation } from '@gusto/embedded-api/react-query/contractorsUpdate'\nimport {\n createContractorPaySchema,\n WageType,\n type ContractorPayFormData,\n type ContractorPayFormOutputs,\n} from './contractorPaySchema'\nimport type { WageTypeFieldProps, HourlyRateFieldProps } from './fields'\nimport { WageTypeField, HourlyRateField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\n\n/**\n * Props for {@link useContractorPayForm}.\n *\n * @public\n */\nexport interface UseContractorPayFormProps {\n /** Contractor whose compensation is being edited. */\n contractorId: string\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useContractorPayForm} on `form.Fields`.\n *\n * @public\n */\nexport interface ContractorPayFormFields {\n /** Bound to `wageType`. Selects whether the contractor is paid Fixed or Hourly. */\n WageType: ComponentType<WageTypeFieldProps>\n /** Bound to `hourlyRate`. Required and rendered only when `wageType` is `Hourly`. */\n HourlyRate: ComponentType<HourlyRateFieldProps>\n}\n\n/**\n * Ready-state return value of {@link useContractorPayForm}.\n *\n * @public\n */\nexport interface UseContractorPayFormReady extends BaseFormHookReady<\n ContractorPayFieldsMetadata,\n ContractorPayFormData,\n ContractorPayFormFields\n> {\n /** The full contractor entity, loaded from the API. */\n data: { contractor: Contractor }\n /**\n * `isPending` reflects the in-flight update mutation; `mode` is always\n * `'update'`. `isHourly` reflects the currently selected wage type so a\n * composing component can decide whether to render the hourly-rate field.\n */\n status: { isPending: boolean; mode: 'update'; isHourly: boolean }\n /** Submit the form. Returns the updated contractor on success or `undefined` on validation/mutation failure. */\n actions: {\n onSubmit: () => Promise<HookSubmitResult<Contractor> | undefined>\n }\n}\n\n/** @internal */\nfunction buildContractorPayFieldsMetadata(\n base: Record<keyof ContractorPayFormData, FieldMetadata>,\n) {\n const wageTypeOptions = [WageType.Fixed, WageType.Hourly].map(value => ({ value, label: value }))\n return {\n wageType: withOptions(base.wageType, wageTypeOptions, [WageType.Fixed, WageType.Hourly]),\n hourlyRate: base.hourlyRate,\n } satisfies FieldsMetadata\n}\n\n/**\n * Headless React Hook Form hook for editing a contractor's compensation.\n *\n * @remarks\n * Owns `wageType` (Fixed or Hourly) and, when Hourly, `hourlyRate`. Always\n * operates in update mode — a contractor's wage type is set at creation. Every\n * submit echoes the contractor's current `type` back to the API alongside the\n * changed fields: the update endpoint's wire schema defaults an omitted `type`\n * to `\"Individual\"`, so a narrower payload would silently misrepresent a\n * Business contractor.\n *\n * @param props - See {@link UseContractorPayFormProps}.\n * @returns A loading-state result while data loads, or a {@link UseContractorPayFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import { useContractorPayForm, SDKFormProvider } from '@gusto/embedded-react-sdk'\n *\n * function PayScreen({ contractorId }: { contractorId: string }) {\n * const pay = useContractorPayForm({ contractorId })\n *\n * if (pay.isLoading) return null\n * const { Fields } = pay.form\n *\n * return (\n * <SDKFormProvider formHookResult={pay}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void pay.actions.onSubmit()\n * }}\n * >\n * <Fields.WageType label=\"Compensation type\" />\n * <Fields.HourlyRate label=\"Hourly rate\" />\n * <button type=\"submit\" disabled={pay.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useContractorPayForm({\n contractorId,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseContractorPayFormProps): HookLoadingResult | UseContractorPayFormReady {\n const contractorQuery = useContractorsGet({ contractorUuid: contractorId })\n const contractor = contractorQuery.data?.contractor\n\n const [schema, metadataConfig] = useMemo(() => createContractorPaySchema(), [])\n\n const resolvedDefaults: ContractorPayFormData = useMemo(\n () => ({\n wageType: contractor?.wageType ?? WageType.Fixed,\n hourlyRate: contractor?.hourlyRate ? Number(contractor.hourlyRate) : 0,\n }),\n [contractor],\n )\n\n const formMethods = useForm<ContractorPayFormData, unknown, ContractorPayFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const watchedWageType = useWatch({ control: formMethods.control, name: 'wageType' })\n const isHourly = watchedWageType === WageType.Hourly\n\n const updateMutation = useContractorsUpdateMutation()\n const isPending = updateMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('ContractorPayForm')\n\n const errorHandling = composeErrorHandler([contractorQuery], { submitError, setSubmitError })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildContractorPayFieldsMetadata(baseMetadata)\n\n const onSubmit = async (): Promise<HookSubmitResult<Contractor> | undefined> => {\n if (!contractor?.version) {\n throw new SDKInternalError('Cannot submit pay form before contractor data is loaded')\n }\n const contractorVersion = contractor.version\n const contractorType = contractor.type\n let submitResult: HookSubmitResult<Contractor> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: ContractorPayFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const result = await updateMutation.mutateAsync({\n request: {\n contractorUuid: contractorId,\n contractorUpdateRequestBody: {\n version: contractorVersion,\n type: contractorType,\n wageType: payload.wageType,\n hourlyRate:\n payload.wageType === WageType.Hourly ? String(payload.hourlyRate) : undefined,\n },\n },\n })\n\n if (!result.contractor) {\n throw new SDKInternalError('Contractor pay update failed')\n }\n\n submitResult = { mode: 'update' as const, data: result.contractor }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (contractorQuery.isLoading || !contractor) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: { contractor },\n status: { isPending, mode: 'update' as const, isHourly },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n WageType: WageTypeField,\n HourlyRate: HourlyRateField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useContractorPayForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UseContractorPayFormResult = HookLoadingResult | UseContractorPayFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link useContractorPayForm}.\n *\n * @public\n */\nexport type ContractorPayFieldsMetadata = ReturnType<typeof buildContractorPayFieldsMetadata>\n"],"names":["buildContractorPayFieldsMetadata","base","wageTypeOptions","WageType","value","withOptions","useContractorPayForm","contractorId","validationMode","shouldFocusError","contractorQuery","useContractorsGet","contractor","schema","metadataConfig","useMemo","createContractorPaySchema","resolvedDefaults","formMethods","useForm","zodResolver","isHourly","useWatch","updateMutation","useContractorsUpdateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","SDKInternalError","contractorVersion","contractorType","submitResult","resolve","data","payload","result","hookFormInternals","useHookFormInternals","WageTypeField","HourlyRateField","createGetFormSubmissionValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useContractorPayForm.js","sources":["../../../../../../src/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport { useMemo } from 'react'\nimport { useForm, useWatch } from 'react-hook-form'\nimport type { UseFormProps } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport { useContractorsGet } from '@gusto/embedded-api/react-query/contractorsGet'\nimport { useContractorsUpdateMutation } from '@gusto/embedded-api/react-query/contractorsUpdate'\nimport {\n createContractorPaySchema,\n WageType,\n type ContractorPayFormData,\n type ContractorPayFormOutputs,\n} from './contractorPaySchema'\nimport type { WageTypeFieldProps, HourlyRateFieldProps } from './fields'\nimport { WageTypeField, HourlyRateField } from './fields'\nimport { useDeriveFieldsMetadata } from '@/partner-hook-utils/form/useDeriveFieldsMetadata'\nimport { useHookFormInternals } from '@/partner-hook-utils/form/useHookFormInternals'\nimport { createGetFormSubmissionValues } from '@/partner-hook-utils/form/getFormSubmissionValues'\nimport { withOptions } from '@/partner-hook-utils/form/withOptions'\nimport { composeErrorHandler } from '@/partner-hook-utils/composeErrorHandler'\nimport type {\n BaseFormHookReady,\n FieldMetadata,\n FieldsMetadata,\n HookLoadingResult,\n HookSubmitResult,\n} from '@/partner-hook-utils/types'\nimport { useBaseSubmit } from '@/components/Base/useBaseSubmit'\nimport { SDKInternalError } from '@/types/sdkError'\n\n/**\n * Props for {@link useContractorPayForm}.\n *\n * @public\n */\nexport interface UseContractorPayFormProps {\n /** Contractor whose compensation is being edited. */\n contractorId: string\n /** When validation runs. Passed through to react-hook-form. Defaults to `'onSubmit'`. */\n validationMode?: UseFormProps['mode']\n /** Auto-focus the first invalid field on submit. Set to `false` when using `composeSubmitHandler`. Defaults to `true`. */\n shouldFocusError?: boolean\n}\n\n/**\n * Field components exposed by {@link useContractorPayForm} on `form.Fields`.\n *\n * @public\n */\nexport interface ContractorPayFormFields {\n /** Bound to `wageType`. Selects whether the contractor is paid Fixed or Hourly. */\n WageType: ComponentType<WageTypeFieldProps>\n /** Bound to `hourlyRate`. Required and rendered only when `wageType` is `Hourly`. */\n HourlyRate: ComponentType<HourlyRateFieldProps>\n}\n\n/**\n * Ready-state return value of {@link useContractorPayForm}.\n *\n * @public\n */\nexport interface UseContractorPayFormReady extends BaseFormHookReady<\n ContractorPayFieldsMetadata,\n ContractorPayFormData,\n ContractorPayFormFields\n> {\n /** The full contractor entity, loaded from the API. */\n data: { contractor: Contractor }\n /**\n * `isPending` reflects the in-flight update mutation; `mode` is always\n * `'update'`. `isHourly` reflects the currently selected wage type so a\n * composing component can decide whether to render the hourly-rate field.\n */\n status: { isPending: boolean; mode: 'update'; isHourly: boolean }\n /** Submit the form. Returns the updated contractor on success or `undefined` on validation/mutation failure. */\n actions: {\n onSubmit: () => Promise<HookSubmitResult<Contractor> | undefined>\n }\n}\n\n/** @internal */\nfunction buildContractorPayFieldsMetadata(\n base: Record<keyof ContractorPayFormData, FieldMetadata>,\n) {\n const wageTypeOptions = [WageType.Fixed, WageType.Hourly].map(value => ({ value, label: value }))\n return {\n wageType: withOptions(base.wageType, wageTypeOptions, [WageType.Fixed, WageType.Hourly]),\n hourlyRate: base.hourlyRate,\n } satisfies FieldsMetadata\n}\n\n/**\n * Headless React Hook Form hook for editing a contractor's compensation.\n *\n * @remarks\n * Owns `wageType` (Fixed or Hourly) and, when Hourly, `hourlyRate`. Always\n * operates in update mode — a contractor's wage type is set at creation. Every\n * submit echoes the contractor's current `type` back to the API alongside the\n * changed fields: the update endpoint's wire schema defaults an omitted `type`\n * to `\"Individual\"`, so a narrower payload would silently misrepresent a\n * Business contractor.\n *\n * @param props - See {@link UseContractorPayFormProps}.\n * @returns A loading-state result while data loads, or a {@link UseContractorPayFormReady} once ready.\n * @public\n *\n * @example\n * ```tsx\n * import { useContractorPayForm, SDKFormProvider } from '@gusto/embedded-react-sdk'\n *\n * function PayScreen({ contractorId }: { contractorId: string }) {\n * const pay = useContractorPayForm({ contractorId })\n *\n * if (pay.isLoading) return null\n * const { Fields } = pay.form\n *\n * return (\n * <SDKFormProvider formHookResult={pay}>\n * <form\n * onSubmit={e => {\n * e.preventDefault()\n * void pay.actions.onSubmit()\n * }}\n * >\n * <Fields.WageType label=\"Compensation type\" />\n * <Fields.HourlyRate label=\"Hourly rate\" />\n * <button type=\"submit\" disabled={pay.status.isPending}>Save</button>\n * </form>\n * </SDKFormProvider>\n * )\n * }\n * ```\n */\nexport function useContractorPayForm({\n contractorId,\n validationMode = 'onSubmit',\n shouldFocusError = true,\n}: UseContractorPayFormProps): HookLoadingResult | UseContractorPayFormReady {\n const contractorQuery = useContractorsGet({ contractorUuid: contractorId })\n const contractor = contractorQuery.data?.contractorShow\n\n const [schema, metadataConfig] = useMemo(() => createContractorPaySchema(), [])\n\n const resolvedDefaults: ContractorPayFormData = useMemo(\n () => ({\n wageType: contractor?.wageType ?? WageType.Fixed,\n hourlyRate: contractor?.hourlyRate ? Number(contractor.hourlyRate) : 0,\n }),\n [contractor],\n )\n\n const formMethods = useForm<ContractorPayFormData, unknown, ContractorPayFormOutputs>({\n resolver: zodResolver(schema),\n mode: validationMode,\n shouldFocusError,\n defaultValues: resolvedDefaults,\n values: resolvedDefaults,\n resetOptions: { keepDirtyValues: true },\n })\n\n const watchedWageType = useWatch({ control: formMethods.control, name: 'wageType' })\n const isHourly = watchedWageType === WageType.Hourly\n\n const updateMutation = useContractorsUpdateMutation()\n const isPending = updateMutation.isPending\n\n const {\n baseSubmitHandler,\n error: submitError,\n setError: setSubmitError,\n } = useBaseSubmit('ContractorPayForm')\n\n const errorHandling = composeErrorHandler([contractorQuery], { submitError, setSubmitError })\n\n const baseMetadata = useDeriveFieldsMetadata(metadataConfig, formMethods.control)\n const fieldsMetadata = buildContractorPayFieldsMetadata(baseMetadata)\n\n const onSubmit = async (): Promise<HookSubmitResult<Contractor> | undefined> => {\n if (!contractor?.version) {\n throw new SDKInternalError('Cannot submit pay form before contractor data is loaded')\n }\n const contractorVersion = contractor.version\n const contractorType = contractor.type\n let submitResult: HookSubmitResult<Contractor> | undefined\n\n await new Promise<void>(resolve => {\n void formMethods.handleSubmit(\n async (data: ContractorPayFormOutputs) => {\n await baseSubmitHandler(data, async payload => {\n const result = await updateMutation.mutateAsync({\n request: {\n contractorUuid: contractorId,\n contractorUpdateRequestBody: {\n version: contractorVersion,\n type: contractorType,\n wageType: payload.wageType,\n hourlyRate:\n payload.wageType === WageType.Hourly ? String(payload.hourlyRate) : undefined,\n },\n },\n })\n\n if (!result.contractor) {\n throw new SDKInternalError('Contractor pay update failed')\n }\n\n submitResult = { mode: 'update' as const, data: result.contractor }\n })\n resolve()\n },\n () => {\n resolve()\n },\n )()\n })\n\n return submitResult\n }\n\n const hookFormInternals = useHookFormInternals(formMethods)\n\n if (contractorQuery.isLoading || !contractor) {\n return { isLoading: true as const, errorHandling }\n }\n\n return {\n isLoading: false as const,\n data: { contractor },\n status: { isPending, mode: 'update' as const, isHourly },\n actions: { onSubmit },\n errorHandling,\n form: {\n Fields: {\n WageType: WageTypeField,\n HourlyRate: HourlyRateField,\n },\n fieldsMetadata,\n hookFormInternals,\n getFormSubmissionValues: createGetFormSubmissionValues(formMethods, schema),\n },\n }\n}\n\n/**\n * Return type of {@link useContractorPayForm} — a discriminated union on `isLoading`.\n *\n * @public\n */\nexport type UseContractorPayFormResult = HookLoadingResult | UseContractorPayFormReady\n\n/**\n * Per-field metadata exposed on `form.fieldsMetadata` for {@link useContractorPayForm}.\n *\n * @public\n */\nexport type ContractorPayFieldsMetadata = ReturnType<typeof buildContractorPayFieldsMetadata>\n"],"names":["buildContractorPayFieldsMetadata","base","wageTypeOptions","WageType","value","withOptions","useContractorPayForm","contractorId","validationMode","shouldFocusError","contractorQuery","useContractorsGet","contractor","schema","metadataConfig","useMemo","createContractorPaySchema","resolvedDefaults","formMethods","useForm","zodResolver","isHourly","useWatch","updateMutation","useContractorsUpdateMutation","isPending","baseSubmitHandler","submitError","setSubmitError","useBaseSubmit","errorHandling","composeErrorHandler","baseMetadata","useDeriveFieldsMetadata","fieldsMetadata","onSubmit","SDKInternalError","contractorVersion","contractorType","submitResult","resolve","data","payload","result","hookFormInternals","useHookFormInternals","WageTypeField","HourlyRateField","createGetFormSubmissionValues"],"mappings":"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"}
|
package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagementContractorList.js","sources":["../../../../../src/components/Contractor/ContractorList/management/ManagementContractorList.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useContractorList, type ContractorType } from '../shared/useContractorList'\nimport { ManagementContractorListView } from './ManagementContractorListView'\nimport { BaseBoundaries, BaseLayout, type BaseComponentInterface } from '@/components/Base/Base'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\n\n/**\n * The tab currently selected on {@link ManagementContractorList}.\n *\n * @public\n */\nexport type ContractorTab = 'active' | 'onboarding' | 'dismissed'\n\n/**\n * Props for {@link ManagementContractorList}.\n *\n * @public\n */\nexport interface ManagementContractorListProps extends BaseComponentInterface<'Contractor.ManagementContractorList'> {\n /** The associated company identifier. */\n companyId: string\n /** Tab to render first: Active, Onboarding, or Dismissed. Defaults to `'active'`. */\n initialTab?: ContractorTab\n /** Success message to display in an alert above the list, typically after a dismissal is scheduled. */\n successMessage?: string\n}\n\nconst mapTabToContractorType = (tab: ContractorTab): ContractorType => {\n switch (tab) {\n case 'active':\n return 'active'\n case 'onboarding':\n return 'onboarding'\n case 'dismissed':\n return 'terminated'\n }\n}\n\nfunction ManagementContractorListRoot({\n companyId,\n initialTab = 'active',\n successMessage,\n onEvent,\n dictionary,\n LoaderComponent,\n className,\n}: ManagementContractorListProps) {\n useI18n('Contractor.ManagementContractorList')\n useComponentDictionary('Contractor.ManagementContractorList', dictionary)\n\n const [selectedTab, setSelectedTab] = useState<ContractorTab>(initialTab)\n // Seeded from the prop on mount only — the prop changes only when the owning flow\n // remounts this component on the way back from a sub-flow (e.g. Dismissal), so a fresh\n // mount always starts with the latest message. Cleared locally on any further\n // interaction below so a stale banner doesn't linger past the action it announced.\n const [bannerMessage, setBannerMessage] = useState(successMessage)\n\n const contractorList = useContractorList({\n companyId,\n contractorType: mapTabToContractorType(selectedTab),\n })\n\n if (contractorList.isLoading) {\n return (\n <BaseLayout\n isLoading\n error={contractorList.errorHandling.errors}\n LoaderComponent={LoaderComponent}\n />\n )\n }\n\n const handleEdit = (contractorId: string) => {\n onEvent(componentEvents.CONTRACTOR_UPDATE, { contractorId })\n }\n\n const handleView = (contractorId: string) => {\n onEvent(componentEvents.CONTRACTOR_VIEW, { contractorId })\n }\n\n const handleAddContractor = () => {\n onEvent(componentEvents.CONTRACTOR_CREATE)\n }\n\n const handleDismiss = (contractorId: string) => {\n onEvent(componentEvents.CONTRACTOR_DISMISS, { contractorId })\n }\n\n const handleRehire = (contractorId: string) => {\n onEvent(componentEvents.CONTRACTOR_REHIRE, { contractorId })\n }\n\n const handleTabChange = (tab: ContractorTab) => {\n setBannerMessage(undefined)\n setSelectedTab(tab)\n }\n\n return (\n <BaseLayout error={contractorList.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <ManagementContractorListView\n className={className}\n selectedTab={selectedTab}\n onTabChange={handleTabChange}\n successMessage={bannerMessage}\n contractors={contractorList.data.contractors}\n isFetching={contractorList.status.isFetching}\n pagination={contractorList.pagination}\n status={contractorList.status}\n onEdit={handleEdit}\n onView={handleView}\n onDismiss={handleDismiss}\n onRehire={handleRehire}\n onDelete={async (contractorId: string) => {\n setBannerMessage(undefined)\n await contractorList.actions.onDelete(contractorId)\n onEvent(componentEvents.CONTRACTOR_DELETED, { contractorId })\n }}\n onCancelSelfOnboarding={async (contractorId: string) => {\n setBannerMessage(undefined)\n const onboardingStatus = await contractorList.actions.onCancelSelfOnboarding(contractorId)\n if (!onboardingStatus) return\n onEvent(componentEvents.CONTRACTOR_SELF_ONBOARDING_CANCELLED, onboardingStatus)\n }}\n onCancelDismissal={async (contractorId: string) => {\n setBannerMessage(undefined)\n await contractorList.actions.onCancelDismissal(contractorId)\n onEvent(componentEvents.CONTRACTOR_DISMISSAL_CANCELLED, { contractorId })\n }}\n onCancelRehire={async (contractorId: string) => {\n setBannerMessage(undefined)\n await contractorList.actions.onCancelRehire(contractorId)\n onEvent(componentEvents.CONTRACTOR_REHIRE_CANCELLED, { contractorId })\n }}\n onAddContractor={handleAddContractor}\n />\n </BaseLayout>\n )\n}\n\n/**\n * Renders a tabbed list of a company's contractors split across Active, Onboarding, and Dismissed\n * tabs, with per-row actions tailored to each tab (edit, delete, view details, dismiss, rehire,\n * cancel a scheduled dismissal or rehire).\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/create` | Fired when the user clicks \"Add contractor\". | — |\n * | `contractor/update` | Fired when the user selects \"Edit\"/\"Review\" on an onboarding-tab row. | `{ contractorId: string }` |\n * | `contractor/view` | Fired when the user selects \"View details\" on an active or dismissed row. | `{ contractorId: string }` |\n * | `contractor/deleted` | Fired after an onboarding-tab row's \"Remove\" action completes. | `{ contractorId: string }` |\n * | `contractor/selfOnboarding/cancelled` | Fired after the \"Cancel self-onboarding\" action updates a contractor's onboarding status. | The updated `contractorOnboardingStatus` returned by the API. |\n * | `contractor/dismiss` | Fired when the user selects \"Dismiss\" on an active row. No mutation is performed by this component. | `{ contractorId: string }` |\n * | `contractor/rehire` | Fired when the user selects \"Rehire\" on a dismissed row. No mutation is performed by this component. | `{ contractorId: string }` |\n * | `contractor/dismissal/cancelled` | Fired after a scheduled dismissal is cancelled via the confirm dialog. | `{ contractorId: string }` |\n * | `contractor/rehire/cancelled` | Fired after a scheduled rehire is cancelled via the confirm dialog. | `{ contractorId: string }` |\n *\n * @public\n */\nexport function ManagementContractorList({\n FallbackComponent,\n LoaderComponent,\n ...props\n}: ManagementContractorListProps) {\n return (\n <BaseBoundaries\n componentName=\"Contractor.ManagementContractorList\"\n FallbackComponent={FallbackComponent}\n LoaderComponent={LoaderComponent}\n >\n <ManagementContractorListRoot LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n"],"names":["mapTabToContractorType","tab","ManagementContractorListRoot","companyId","initialTab","successMessage","onEvent","dictionary","LoaderComponent","className","useI18n","useComponentDictionary","selectedTab","setSelectedTab","useState","bannerMessage","setBannerMessage","contractorList","useContractorList","jsx","BaseLayout","handleEdit","contractorId","componentEvents","handleView","handleAddContractor","handleDismiss","handleRehire","handleTabChange","ManagementContractorListView","onboardingStatus","ManagementContractorList","FallbackComponent","props","BaseBoundaries"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ManagementContractorList.js","sources":["../../../../../src/components/Contractor/ContractorList/management/ManagementContractorList.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { useContractorList, type ContractorType } from '../shared/useContractorList'\nimport { ManagementContractorListView } from './ManagementContractorListView'\nimport { BaseBoundaries, BaseLayout, type BaseComponentInterface } from '@/components/Base/Base'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\n\n/**\n * The tab currently selected on {@link ManagementContractorList}.\n *\n * @public\n */\nexport type ContractorTab = 'active' | 'onboarding' | 'dismissed'\n\n/**\n * Props for {@link ManagementContractorList}.\n *\n * @public\n */\nexport interface ManagementContractorListProps extends BaseComponentInterface<'Contractor.ManagementContractorList'> {\n /** The associated company identifier. */\n companyId: string\n /** Tab to render first: Active, Onboarding, or Dismissed. Defaults to `'active'`. */\n initialTab?: ContractorTab\n /** Success message to display in an alert above the list, typically after a dismissal is scheduled. */\n successMessage?: string\n}\n\nconst mapTabToContractorType = (tab: ContractorTab): ContractorType => {\n switch (tab) {\n case 'active':\n return 'active'\n case 'onboarding':\n return 'onboarding'\n case 'dismissed':\n return 'terminated'\n }\n}\n\nfunction ManagementContractorListRoot({\n companyId,\n initialTab = 'active',\n successMessage,\n onEvent,\n dictionary,\n LoaderComponent,\n className,\n}: ManagementContractorListProps) {\n useI18n('Contractor.ManagementContractorList')\n useComponentDictionary('Contractor.ManagementContractorList', dictionary)\n\n const [selectedTab, setSelectedTab] = useState<ContractorTab>(initialTab)\n // Seeded from the prop on mount only — the prop changes only when the owning flow\n // remounts this component on the way back from a sub-flow (e.g. Dismissal), so a fresh\n // mount always starts with the latest message. Cleared locally on any further\n // interaction below so a stale banner doesn't linger past the action it announced.\n const [bannerMessage, setBannerMessage] = useState(successMessage)\n\n const contractorList = useContractorList({\n companyId,\n contractorType: mapTabToContractorType(selectedTab),\n })\n\n if (contractorList.isLoading) {\n return (\n <BaseLayout\n isLoading\n error={contractorList.errorHandling.errors}\n LoaderComponent={LoaderComponent}\n />\n )\n }\n\n const handleEdit = (contractorId: string) => {\n onEvent(componentEvents.CONTRACTOR_UPDATE, { contractorId })\n }\n\n const handleView = (contractorId: string) => {\n onEvent(componentEvents.CONTRACTOR_VIEW, { contractorId })\n }\n\n const handleAddContractor = () => {\n onEvent(componentEvents.CONTRACTOR_CREATE)\n }\n\n const handleDismiss = (contractorId: string) => {\n onEvent(componentEvents.CONTRACTOR_DISMISS, { contractorId })\n }\n\n const handleRehire = (contractorId: string) => {\n onEvent(componentEvents.CONTRACTOR_REHIRE, { contractorId })\n }\n\n const handleTabChange = (tab: ContractorTab) => {\n setBannerMessage(undefined)\n setSelectedTab(tab)\n }\n\n return (\n <BaseLayout error={contractorList.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <ManagementContractorListView\n className={className}\n selectedTab={selectedTab}\n onTabChange={handleTabChange}\n successMessage={bannerMessage}\n contractors={contractorList.data.contractors}\n isFetching={contractorList.status.isFetching}\n pagination={contractorList.pagination}\n sort={contractorList.sort}\n status={contractorList.status}\n onEdit={handleEdit}\n onView={handleView}\n onDismiss={handleDismiss}\n onRehire={handleRehire}\n onDelete={async (contractorId: string) => {\n setBannerMessage(undefined)\n await contractorList.actions.onDelete(contractorId)\n onEvent(componentEvents.CONTRACTOR_DELETED, { contractorId })\n }}\n onCancelSelfOnboarding={async (contractorId: string) => {\n setBannerMessage(undefined)\n const onboardingStatus = await contractorList.actions.onCancelSelfOnboarding(contractorId)\n if (!onboardingStatus) return\n onEvent(componentEvents.CONTRACTOR_SELF_ONBOARDING_CANCELLED, onboardingStatus)\n }}\n onCancelDismissal={async (contractorId: string) => {\n setBannerMessage(undefined)\n await contractorList.actions.onCancelDismissal(contractorId)\n onEvent(componentEvents.CONTRACTOR_DISMISSAL_CANCELLED, { contractorId })\n }}\n onCancelRehire={async (contractorId: string) => {\n setBannerMessage(undefined)\n await contractorList.actions.onCancelRehire(contractorId)\n onEvent(componentEvents.CONTRACTOR_REHIRE_CANCELLED, { contractorId })\n }}\n onAddContractor={handleAddContractor}\n />\n </BaseLayout>\n )\n}\n\n/**\n * Renders a tabbed list of a company's contractors split across Active, Onboarding, and Dismissed\n * tabs, with per-row actions tailored to each tab (edit, delete, view details, dismiss, rehire,\n * cancel a scheduled dismissal or rehire).\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/create` | Fired when the user clicks \"Add contractor\". | — |\n * | `contractor/update` | Fired when the user selects \"Edit\"/\"Review\" on an onboarding-tab row. | `{ contractorId: string }` |\n * | `contractor/view` | Fired when the user selects \"View details\" on an active or dismissed row. | `{ contractorId: string }` |\n * | `contractor/deleted` | Fired after an onboarding-tab row's \"Remove\" action completes. | `{ contractorId: string }` |\n * | `contractor/selfOnboarding/cancelled` | Fired after the \"Cancel self-onboarding\" action updates a contractor's onboarding status. | The updated `contractorOnboardingStatus` returned by the API. |\n * | `contractor/dismiss` | Fired when the user selects \"Dismiss\" on an active row. No mutation is performed by this component. | `{ contractorId: string }` |\n * | `contractor/rehire` | Fired when the user selects \"Rehire\" on a dismissed row. No mutation is performed by this component. | `{ contractorId: string }` |\n * | `contractor/dismissal/cancelled` | Fired after a scheduled dismissal is cancelled via the confirm dialog. | `{ contractorId: string }` |\n * | `contractor/rehire/cancelled` | Fired after a scheduled rehire is cancelled via the confirm dialog. | `{ contractorId: string }` |\n *\n * @public\n */\nexport function ManagementContractorList({\n FallbackComponent,\n LoaderComponent,\n ...props\n}: ManagementContractorListProps) {\n return (\n <BaseBoundaries\n componentName=\"Contractor.ManagementContractorList\"\n FallbackComponent={FallbackComponent}\n LoaderComponent={LoaderComponent}\n >\n <ManagementContractorListRoot LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n"],"names":["mapTabToContractorType","tab","ManagementContractorListRoot","companyId","initialTab","successMessage","onEvent","dictionary","LoaderComponent","className","useI18n","useComponentDictionary","selectedTab","setSelectedTab","useState","bannerMessage","setBannerMessage","contractorList","useContractorList","jsx","BaseLayout","handleEdit","contractorId","componentEvents","handleView","handleAddContractor","handleDismiss","handleRehire","handleTabChange","ManagementContractorListView","onboardingStatus","ManagementContractorList","FallbackComponent","props","BaseBoundaries"],"mappings":"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"}
|