@gusto/embedded-react-sdk 0.55.7 → 0.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -0
- package/dist/components/Common/FadeIn/FadeIn.module.scss.js +4 -4
- package/dist/components/Common/FieldCaption/FieldCaption.js +22 -18
- package/dist/components/Common/FieldCaption/FieldCaption.js.map +1 -1
- package/dist/components/Common/Flex/Flex.js +17 -15
- package/dist/components/Common/Flex/Flex.js.map +1 -1
- package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
- package/dist/components/Common/UI/Heading/Heading.module.scss.js +7 -7
- package/dist/components/Common/UI/Menu/MenuTypes.js.map +1 -1
- package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js +43 -42
- package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js.map +1 -1
- package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +5 -3
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +5 -3
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +7 -5
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +5 -3
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +5 -3
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +27 -27
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +10 -8
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +8 -6
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +5 -3
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +5 -3
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +5 -3
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +45 -30
- package/dist/components/Company/PaySchedule/PaySchedule.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js +12 -11
- package/dist/components/Company/PaySchedule/PayScheduleComponents.js.map +1 -1
- package/dist/components/Company/PaySchedule/PayScheduleForm.js +72 -55
- package/dist/components/Company/PaySchedule/PayScheduleForm.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js +24 -20
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/fields.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js +33 -29
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.js.map +1 -1
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js +131 -115
- package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +5 -3
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +5 -3
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +5 -3
- package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +31 -29
- package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +110 -109
- package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
- package/dist/components/Contractor/ContractorList/onboarding/ContractorList.js +21 -19
- package/dist/components/Contractor/ContractorList/onboarding/ContractorList.js.map +1 -1
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js +56 -55
- package/dist/components/Contractor/ContractorList/onboarding/ContractorListView.js.map +1 -1
- package/dist/components/Contractor/Dashboard/Dashboard.js +34 -33
- package/dist/components/Contractor/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +117 -115
- package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +77 -75
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js +44 -43
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js +40 -39
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +35 -29
- package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +21 -20
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js +41 -40
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +21 -20
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js +33 -32
- package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +80 -78
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +44 -43
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
- package/dist/components/Contractor/Submit/Submit.js +113 -105
- package/dist/components/Contractor/Submit/Submit.js.map +1 -1
- package/dist/components/Contractor/Submit/SubmitDone.js +11 -11
- package/dist/components/Contractor/Submit/SubmitDone.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js +20 -18
- package/dist/components/Employee/Compensation/management/CompensationAddJobForm/CompensationAddJobForm.js.map +1 -1
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js +18 -15
- package/dist/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.js.map +1 -1
- package/dist/components/Employee/Dashboard/Dashboard.js +33 -32
- package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
- package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js +21 -19
- package/dist/components/Employee/Deductions/management/DeductionsEditForm/DeductionsEditForm.js.map +1 -1
- package/dist/components/Employee/Documents/management/DocumentManager.js +34 -26
- package/dist/components/Employee/Documents/management/DocumentManager.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +5 -3
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js +30 -29
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibility.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js +54 -53
- package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +29 -28
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js +16 -15
- package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.js.map +1 -1
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js +27 -25
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js +121 -111
- package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js +22 -20
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js +24 -23
- package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +52 -43
- package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js +29 -26
- package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js +19 -17
- package/dist/components/Employee/HomeAddress/management/HomeAddressEditForm.js.map +1 -1
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js +79 -78
- package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.js +4 -4
- package/dist/components/Employee/PaymentMethod/onboarding/BankForm.js +4 -4
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +40 -39
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +31 -30
- package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +43 -41
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js +20 -19
- package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js +19 -17
- package/dist/components/Employee/WorkAddress/management/WorkAddressEditForm.js.map +1 -1
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js +49 -48
- package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
- package/dist/components/Flow/Flow.js +1 -1
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +28 -28
- package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +37 -36
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +36 -35
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js +35 -28
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelection.js.map +1 -1
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js +23 -22
- package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +48 -45
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +85 -77
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +63 -59
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
- package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js +23 -21
- package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js.map +1 -1
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelection.js +26 -19
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelection.js.map +1 -1
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js +14 -12
- package/dist/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +184 -162
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +67 -65
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js +48 -34
- package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +43 -41
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +225 -223
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +78 -75
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js +27 -27
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js +19 -19
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +51 -48
- package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +58 -48
- package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +58 -57
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +83 -69
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollList.js +62 -60
- package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +119 -117
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +187 -171
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +120 -110
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js +45 -34
- package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +20 -14
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +62 -61
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.module.scss.js +14 -14
- package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js +24 -17
- package/dist/components/Payroll/PrintChecks/PrintChecksBanner/PrintChecksBanner.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js +22 -22
- package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js +88 -80
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/PrintChecksForm.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js +52 -37
- package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js.map +1 -1
- package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js +26 -26
- package/dist/components/Payroll/PrintChecks/PrintChecksSummary/PrintChecksSummary.js.map +1 -1
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js +32 -32
- package/dist/components/Payroll/RecoveryCases/RecoveryCasesResubmit/RecoveryCasesResubmit.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js +50 -48
- package/dist/components/Payroll/TransitionCreation/TransitionCreation.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js +34 -33
- package/dist/components/Payroll/TransitionCreation/TransitionCreationPresentation.js.map +1 -1
- package/dist/components/Payroll/TransitionCreation/TransitionCreationTypes.js.map +1 -1
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +28 -24
- package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +255 -228
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js +8 -4
- package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.module.scss.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +10 -8
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js +5 -5
- package/dist/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.js.map +1 -1
- package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js +8 -7
- package/dist/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js +51 -50
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetail.js.map +1 -1
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js +20 -18
- package/dist/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.js.map +1 -1
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js +51 -49
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionForm.js.map +1 -1
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormPresentation.js +20 -20
- package/dist/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyList.js +50 -49
- package/dist/components/TimeOff/PolicyList/PolicyList.js.map +1 -1
- package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js +34 -33
- package/dist/components/TimeOff/PolicyList/PolicyListPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicySettings/PolicySettings.js +46 -45
- package/dist/components/TimeOff/PolicySettings/PolicySettings.js.map +1 -1
- package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js +152 -143
- package/dist/components/TimeOff/PolicySettings/PolicySettingsPresentation.js.map +1 -1
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js +14 -13
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelector.js.map +1 -1
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.js +44 -35
- package/dist/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js +88 -71
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationForm.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js +164 -155
- package/dist/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js +57 -55
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js +25 -24
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.js.map +1 -1
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js +94 -92
- package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.js.map +1 -1
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js +156 -155
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetail.js.map +1 -1
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.js +21 -19
- package/dist/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.js.map +1 -1
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js +28 -26
- package/dist/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.js +29 -28
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ApiProvider/apiVersionMismatchHook.js +15 -0
- package/dist/contexts/ApiProvider/apiVersionMismatchHook.js.map +1 -0
- package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/ThemeProvider/ThemeProvider.js +32 -26
- package/dist/contexts/ThemeProvider/ThemeProvider.js.map +1 -1
- package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
- package/dist/hooks/usePollingTask/usePollingTask.js +53 -41
- package/dist/hooks/usePollingTask/usePollingTask.js.map +1 -1
- package/dist/i18n/en/Company.PaySchedule.json.js +22 -20
- package/dist/i18n/en/Company.PaySchedule.json.js.map +1 -1
- package/dist/i18n/en/Employee.ManagementEmployeeList.json.js +28 -24
- package/dist/i18n/en/Employee.ManagementEmployeeList.json.js.map +1 -1
- package/dist/i18n/en/Payroll.GrossUpModal.json.js +12 -10
- package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +8 -8
- package/dist/i18n/en/Payroll.PayrollOverview.json.js +15 -15
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js +62 -58
- package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js.map +1 -1
- package/dist/package.json.js +1 -1
- package/dist/src/components/Common/FieldCaption/FieldCaption.d.ts +2 -16
- package/dist/src/components/Common/FieldCaption/FieldCaptionTypes.d.ts +22 -0
- package/dist/src/components/Common/FieldCaption/index.d.ts +1 -0
- package/dist/src/components/Common/Flex/Flex.d.ts +3 -1
- package/dist/src/components/Common/UI/ComboBox/ComboBoxTypes.d.ts +1 -1
- package/dist/src/components/Common/UI/DatePicker/DatePickerTypes.d.ts +2 -1
- package/dist/src/components/Common/UI/Menu/MenuTypes.d.ts +1 -1
- package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.d.ts +1 -1
- package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes.d.ts +5 -0
- package/dist/src/components/Common/UI/Select/SelectTypes.d.ts +2 -1
- package/dist/src/components/Company/PaySchedule/PaySchedule.d.ts +10 -2
- package/dist/src/components/Company/PaySchedule/PayScheduleComponents.d.ts +1 -0
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/fields.d.ts +9 -1
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/index.d.ts +2 -2
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +21 -5
- package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +21 -3
- package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +3 -1
- package/dist/src/components/Contractor/ContractorList/onboarding/ContractorListView.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/CreatePayment/PreviewPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.d.ts +3 -1
- package/dist/src/components/Contractor/Submit/SubmitDone.d.ts +3 -1
- package/dist/src/components/Employee/Compensation/management/CompensationEditForm/CompensationEditForm.d.ts +1 -1
- package/dist/src/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilityPresentation.d.ts +3 -1
- package/dist/src/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocumentsPresentation.d.ts +3 -1
- package/dist/src/components/Employee/EmployeeList/management/ManagementEmployeeListView.d.ts +3 -1
- package/dist/src/components/Employee/EmployeeList/onboarding/EmployeeListView.d.ts +3 -1
- package/dist/src/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +11 -2
- package/dist/src/components/Employee/EmployeeListFlow/employeeListStateMachine.test.d.ts +1 -0
- package/dist/src/components/Employee/HomeAddress/management/HomeAddressView.d.ts +3 -1
- package/dist/src/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.d.ts +3 -1
- package/dist/src/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.d.ts +3 -1
- package/dist/src/components/Employee/WorkAddress/management/WorkAddressView.d.ts +3 -1
- package/dist/src/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +8 -0
- package/dist/src/components/Payroll/OffCycleReasonSelection/OffCycleReasonSelectionPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollConfiguration/useCalculationPoll.d.ts +6 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.d.ts +9 -9
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.d.ts +2 -2
- package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.d.ts +4 -4
- package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +3 -1
- package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +2 -1
- package/dist/src/components/Payroll/PayrollOverview/useSubmissionPoll.d.ts +10 -1
- package/dist/src/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +2 -1
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationPresentation.d.ts +1 -1
- package/dist/src/components/Payroll/TransitionCreation/TransitionCreationTypes.d.ts +2 -0
- package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.d.ts +3 -1
- package/dist/src/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.d.ts +1 -1
- package/dist/src/components/TimeOff/AddEmployeesHoliday/AddEmployeesHoliday.d.ts +1 -1
- package/dist/src/components/TimeOff/AddEmployeesToPolicy/AddEmployeesToPolicy.d.ts +1 -1
- package/dist/src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/HolidayPolicyDetail/HolidayPolicyDetailTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/HolidaySelectionForm/HolidaySelectionFormTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/PolicyList/PolicyListPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/PolicyList/PolicyListTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/PolicySettings/PolicySettingsPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/PolicySettings/PolicySettingsTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/PolicyTypeSelector/PolicyTypeSelectorTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/TimeOffManagement/PolicyConfigurationForm/PolicyConfigurationFormTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesHoliday.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesPresentationTypes.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffManagement/SelectEmployees/SelectEmployeesTimeOff.d.ts +2 -0
- package/dist/src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.d.ts +1 -1
- package/dist/src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailTypes.d.ts +3 -0
- package/dist/src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.d.ts +1 -1
- package/dist/src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayoutTypes.d.ts +2 -0
- package/dist/src/contexts/ApiProvider/ApiProvider.d.ts +5 -3
- package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.d.ts +3 -0
- package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.test.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -0
- package/dist/src/contexts/ComponentAdapter/useComponentContext.d.ts +4 -1
- package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +9 -1
- package/dist/src/contexts/ThemeProvider/ThemeProvider.d.ts +8 -3
- package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +4 -1
- package/dist/src/hooks/usePollingTask/usePollingTask.d.ts +55 -14
- package/dist/src/i18n/types.d.ts +42 -2
- package/dist/src/index.d.ts +1 -1
- package/dist/src/models/external.d.ts +1 -0
- package/dist/style.css +1 -1
- package/docs/guides/endpoint-inventory.json +5 -0
- package/package.json +20 -19
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { jsx as o, jsxs as
|
|
1
|
+
import { jsx as o, jsxs as W } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo as P } from "react";
|
|
3
3
|
import { useTranslation as O } from "react-i18next";
|
|
4
4
|
import T from "./TimeOffPolicyDetail.module.scss.js";
|
|
5
|
-
import { useComponentContext as
|
|
5
|
+
import { useComponentContext as w } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
6
6
|
import { useI18n as p } from "../../../i18n/I18n.js";
|
|
7
|
-
import { PolicyDetailLayout as
|
|
8
|
-
const
|
|
9
|
-
function
|
|
7
|
+
import { PolicyDetailLayout as A } from "../shared/PolicyDetailLayout/PolicyDetailLayout.js";
|
|
8
|
+
const k = "details";
|
|
9
|
+
function j({
|
|
10
10
|
title: a,
|
|
11
11
|
subtitle: e,
|
|
12
12
|
onBack: c,
|
|
@@ -21,20 +21,21 @@ function U({
|
|
|
21
21
|
onAddEmployee: l,
|
|
22
22
|
removeDialog: f,
|
|
23
23
|
successAlert: t,
|
|
24
|
-
onDismissAlert: M
|
|
24
|
+
onDismissAlert: M,
|
|
25
|
+
className: b
|
|
25
26
|
}) {
|
|
26
27
|
p("Company.TimeOff.TimeOffPolicyDetails");
|
|
27
|
-
const { t: h } = O("Company.TimeOff.TimeOffPolicyDetails"), x = i.accrualMethod === "unlimited",
|
|
28
|
+
const { t: h } = O("Company.TimeOff.TimeOffPolicyDetails"), x = i.accrualMethod === "unlimited", C = P(
|
|
28
29
|
() => x ? [] : [
|
|
29
30
|
{
|
|
30
31
|
key: "balance",
|
|
31
32
|
title: h("employeeTable.balance"),
|
|
32
|
-
render: (
|
|
33
|
+
render: (L) => L.balance ?? "-"
|
|
33
34
|
}
|
|
34
35
|
],
|
|
35
36
|
[h, x]
|
|
36
|
-
),
|
|
37
|
-
|
|
37
|
+
), v = /* @__PURE__ */ o(
|
|
38
|
+
y,
|
|
38
39
|
{
|
|
39
40
|
policyDetails: i,
|
|
40
41
|
policySettings: m,
|
|
@@ -42,7 +43,7 @@ function U({
|
|
|
42
43
|
}
|
|
43
44
|
);
|
|
44
45
|
return /* @__PURE__ */ o(
|
|
45
|
-
|
|
46
|
+
A,
|
|
46
47
|
{
|
|
47
48
|
title: a,
|
|
48
49
|
subtitle: e,
|
|
@@ -50,30 +51,31 @@ function U({
|
|
|
50
51
|
backLabel: r,
|
|
51
52
|
actions: u,
|
|
52
53
|
firstTab: {
|
|
53
|
-
id:
|
|
54
|
+
id: k,
|
|
54
55
|
label: h("tabs.policyDetails"),
|
|
55
|
-
content:
|
|
56
|
+
content: v
|
|
56
57
|
},
|
|
57
58
|
selectedTabId: d,
|
|
58
59
|
onTabChange: H,
|
|
59
60
|
employees: {
|
|
60
61
|
...n,
|
|
61
|
-
additionalColumns:
|
|
62
|
+
additionalColumns: C
|
|
62
63
|
},
|
|
63
64
|
onAddEmployee: l,
|
|
64
65
|
removeDialog: f,
|
|
65
66
|
successAlert: t,
|
|
66
|
-
onDismissAlert: M
|
|
67
|
+
onDismissAlert: M,
|
|
68
|
+
className: b
|
|
67
69
|
}
|
|
68
70
|
);
|
|
69
71
|
}
|
|
70
|
-
function
|
|
72
|
+
function y({
|
|
71
73
|
policyDetails: a,
|
|
72
74
|
policySettings: e,
|
|
73
75
|
onChangeSettings: c
|
|
74
76
|
}) {
|
|
75
77
|
p("Company.TimeOff.TimeOffPolicyDetails");
|
|
76
|
-
const { t: r } = O("Company.TimeOff.TimeOffPolicyDetails"), { Box: u, BoxHeader: i, DescriptionList: m, Button: s } =
|
|
78
|
+
const { t: r } = O("Company.TimeOff.TimeOffPolicyDetails"), { Box: u, BoxHeader: i, DescriptionList: m, Button: s } = w(), d = a.accrualMethod === "unlimited", n = a.accrualMethod === "perHourWorked" || a.accrualMethod === "perHourWorkedNoOvertime" || a.accrualMethod === "perHourPaid" || a.accrualMethod === "perHourPaidNoOvertime" || a.accrualMethod === "perPayPeriod", l = P(() => {
|
|
77
79
|
const t = [
|
|
78
80
|
{
|
|
79
81
|
term: r("accrualMethod.label"),
|
|
@@ -117,7 +119,7 @@ function k({
|
|
|
117
119
|
description: e.paidOutOnTermination ? r("paidOutOnTermination.yes") : r("paidOutOnTermination.no")
|
|
118
120
|
}), t;
|
|
119
121
|
}, [e, r, n]);
|
|
120
|
-
return /* @__PURE__ */ o("div", { className: T.cardsContainer, children: /* @__PURE__ */
|
|
122
|
+
return /* @__PURE__ */ o("div", { className: T.cardsContainer, children: /* @__PURE__ */ W("div", { className: T.cards, children: [
|
|
121
123
|
/* @__PURE__ */ o(u, { header: /* @__PURE__ */ o(i, { title: r("details") }), withPadding: !0, children: /* @__PURE__ */ o(m, { items: l, showSeparators: !1, layout: "stacked" }) }),
|
|
122
124
|
!d && e && /* @__PURE__ */ o(
|
|
123
125
|
u,
|
|
@@ -136,6 +138,6 @@ function k({
|
|
|
136
138
|
] }) });
|
|
137
139
|
}
|
|
138
140
|
export {
|
|
139
|
-
|
|
141
|
+
j as TimeOffPolicyDetailPresentation
|
|
140
142
|
};
|
|
141
143
|
//# sourceMappingURL=TimeOffPolicyDetailPresentation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeOffPolicyDetailPresentation.js","sources":["../../../../src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { PolicyDetailLayout } from '../shared/PolicyDetailLayout'\nimport type {\n TimeOffPolicyDetailPresentationProps,\n TimeOffPolicyDetailEmployee,\n PolicyDetails,\n PolicySettingsDisplay,\n} from './TimeOffPolicyDetailTypes'\nimport styles from './TimeOffPolicyDetail.module.scss'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\n\nconst DETAILS_TAB_ID = 'details'\n\n/**\n * Presentational detail view for sick and vacation time-off policies.\n *\n * @remarks\n * Displays policy configuration and accrual settings in a tabbed interface alongside the\n * list of enrolled employees. Provides actions for editing the policy, changing settings,\n * adding employees, removing employees, and editing individual employee balances. This\n * component is fully controlled — pass in the data, selected tab, and dialog state and wire\n * up the callbacks. The corresponding container component is {@link TimeOffPolicyDetail}.\n *\n * @param input - See {@link TimeOffPolicyDetailPresentationProps}.\n * @returns The rendered detail view.\n * @public\n */\nexport function TimeOffPolicyDetailPresentation({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n policyDetails,\n policySettings,\n onChangeSettings,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n}: TimeOffPolicyDetailPresentationProps) {\n useI18n('Company.TimeOff.TimeOffPolicyDetails')\n const { t } = useTranslation('Company.TimeOff.TimeOffPolicyDetails')\n\n const isUnlimited = policyDetails.accrualMethod === 'unlimited'\n\n const balanceColumn = useMemo(\n () =>\n isUnlimited\n ? []\n : [\n {\n key: 'balance' as keyof TimeOffPolicyDetailEmployee,\n title: t('employeeTable.balance'),\n render: (item: TimeOffPolicyDetailEmployee) => item.balance ?? '-',\n },\n ],\n [t, isUnlimited],\n )\n\n const detailsTabContent = (\n <DetailsTab\n policyDetails={policyDetails}\n policySettings={policySettings}\n onChangeSettings={onChangeSettings}\n />\n )\n\n return (\n <PolicyDetailLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n firstTab={{\n id: DETAILS_TAB_ID,\n label: t('tabs.policyDetails'),\n content: detailsTabContent,\n }}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n employees={{\n ...employees,\n additionalColumns: balanceColumn,\n }}\n onAddEmployee={onAddEmployee}\n removeDialog={removeDialog}\n successAlert={successAlert}\n onDismissAlert={onDismissAlert}\n />\n )\n}\n\nfunction DetailsTab({\n policyDetails,\n policySettings,\n onChangeSettings,\n}: {\n policyDetails: PolicyDetails\n policySettings?: PolicySettingsDisplay\n onChangeSettings?: () => void\n}) {\n useI18n('Company.TimeOff.TimeOffPolicyDetails')\n const { t } = useTranslation('Company.TimeOff.TimeOffPolicyDetails')\n const { Box, BoxHeader, DescriptionList, Button } = useComponentContext()\n\n const isUnlimited = policyDetails.accrualMethod === 'unlimited'\n const isHoursWorked =\n policyDetails.accrualMethod === 'perHourWorked' ||\n policyDetails.accrualMethod === 'perHourWorkedNoOvertime' ||\n policyDetails.accrualMethod === 'perHourPaid' ||\n policyDetails.accrualMethod === 'perHourPaidNoOvertime'\n const showAccrualMaxAndWaiting = isHoursWorked || policyDetails.accrualMethod === 'perPayPeriod'\n\n const detailItems = useMemo(() => {\n const items: { term: string; description: string }[] = [\n {\n term: t('accrualMethod.label'),\n description: t(`accrualMethod.${policyDetails.accrualMethod}`),\n },\n ]\n\n if (policyDetails.accrualMethod !== 'unlimited') {\n items.push({\n term: t('accrualRate.label'),\n description: t(`accrualRate.${policyDetails.accrualMethod}`, {\n accrualRate: policyDetails.accrualRate,\n accrualRateUnit: policyDetails.accrualRateUnit,\n }),\n })\n\n if (policyDetails.resetDate) {\n items.push({\n term: t('resetDate'),\n description: policyDetails.resetDate,\n })\n }\n }\n\n return items\n }, [policyDetails, t])\n\n const settingsItems = useMemo(() => {\n if (!policySettings) return []\n\n const items: { term: string; description: string }[] = []\n\n if (showAccrualMaxAndWaiting) {\n items.push({\n term: t('maxAccrualHoursPerYear.label'),\n description:\n policySettings.maxAccrualHoursPerYear != null\n ? t('maxAccrualHoursPerYear.withMaximum', {\n count: policySettings.maxAccrualHoursPerYear,\n })\n : t('maxAccrualHoursPerYear.noMaximum'),\n })\n }\n\n items.push(\n {\n term: t('maxHours.label'),\n description:\n policySettings.maxHours != null\n ? t('maxHours.withMaximum', { count: policySettings.maxHours })\n : t('maxHours.noMaximum'),\n },\n {\n term: t('carryoverLimitHours.label'),\n description:\n policySettings.carryoverLimitHours != null\n ? t('carryoverLimitHours.withLimit', { count: policySettings.carryoverLimitHours })\n : t('carryoverLimitHours.noLimit'),\n },\n )\n\n if (showAccrualMaxAndWaiting) {\n items.push({\n term: t('accrualWaitingPeriodDays.label'),\n description:\n policySettings.accrualWaitingPeriodDays != null\n ? t('accrualWaitingPeriodDays.withPeriod', {\n count: policySettings.accrualWaitingPeriodDays,\n })\n : t('accrualWaitingPeriodDays.noPeriod'),\n })\n }\n\n items.push({\n term: t('paidOutOnTermination.label'),\n description: policySettings.paidOutOnTermination\n ? t('paidOutOnTermination.yes')\n : t('paidOutOnTermination.no'),\n })\n\n return items\n }, [policySettings, t, showAccrualMaxAndWaiting])\n\n return (\n <div className={styles.cardsContainer}>\n <div className={styles.cards}>\n <Box header={<BoxHeader title={t('details')} />} withPadding>\n <DescriptionList items={detailItems} showSeparators={false} layout=\"stacked\" />\n </Box>\n\n {!isUnlimited && policySettings && (\n <Box\n header={\n <BoxHeader\n title={t('policySettingsTitle')}\n action={\n onChangeSettings && (\n <Button variant=\"secondary\" onClick={onChangeSettings}>\n {t('changeSettingsCta')}\n </Button>\n )\n }\n />\n }\n withPadding\n >\n <DescriptionList items={settingsItems} showSeparators={false} layout=\"stacked\" />\n </Box>\n )}\n </div>\n </div>\n )\n}\n"],"names":["DETAILS_TAB_ID","TimeOffPolicyDetailPresentation","title","subtitle","onBack","backLabel","actions","policyDetails","policySettings","onChangeSettings","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","useI18n","t","useTranslation","isUnlimited","balanceColumn","useMemo","item","detailsTabContent","jsx","DetailsTab","PolicyDetailLayout","Box","BoxHeader","DescriptionList","Button","useComponentContext","showAccrualMaxAndWaiting","detailItems","items","settingsItems","styles","jsxs"],"mappings":";;;;;;;AAaA,MAAMA,IAAiB;AAgBhB,SAASC,EAAgC;AAAA,EAC9C,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AACF,GAAyC;AACvC,EAAAC,EAAQ,sCAAsC;AAC9C,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,sCAAsC,GAE7DC,IAAcb,EAAc,kBAAkB,aAE9Cc,IAAgBC;AAAA,IACpB,MACEF,IACI,CAAA,IACA;AAAA,MACE;AAAA,QACE,KAAK;AAAA,QACL,OAAOF,EAAE,uBAAuB;AAAA,QAChC,QAAQ,CAACK,MAAsCA,EAAK,WAAW;AAAA,MAAA;AAAA,IACjE;AAAA,IAER,CAACL,GAAGE,CAAW;AAAA,EAAA,GAGXI,IACJ,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,eAAAnB;AAAA,MACA,gBAAAC;AAAA,MACA,kBAAAC;AAAA,IAAA;AAAA,EAAA;AAIJ,SACE,gBAAAgB;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,OAAAzB;AAAA,MACA,UAAAC;AAAA,MACA,QAAAC;AAAA,MACA,WAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAU;AAAA,QACR,IAAIN;AAAA,QACJ,OAAOkB,EAAE,oBAAoB;AAAA,QAC7B,SAASM;AAAA,MAAA;AAAA,MAEX,eAAAd;AAAA,MACA,aAAAC;AAAA,MACA,WAAW;AAAA,QACT,GAAGC;AAAA,QACH,mBAAmBS;AAAA,MAAA;AAAA,MAErB,eAAAR;AAAA,MACA,cAAAC;AAAA,MACA,cAAAC;AAAA,MACA,gBAAAC;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAASU,EAAW;AAAA,EAClB,eAAAnB;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC;AACF,GAIG;AACD,EAAAQ,EAAQ,sCAAsC;AAC9C,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,sCAAsC,GAC7D,EAAE,KAAAS,GAAK,WAAAC,GAAW,iBAAAC,GAAiB,QAAAC,EAAA,IAAWC,EAAA,GAE9CZ,IAAcb,EAAc,kBAAkB,aAM9C0B,IAJJ1B,EAAc,kBAAkB,mBAChCA,EAAc,kBAAkB,6BAChCA,EAAc,kBAAkB,iBAChCA,EAAc,kBAAkB,2BACgBA,EAAc,kBAAkB,gBAE5E2B,IAAcZ,EAAQ,MAAM;AAChC,UAAMa,IAAiD;AAAA,MACrD;AAAA,QACE,MAAMjB,EAAE,qBAAqB;AAAA,QAC7B,aAAaA,EAAE,iBAAiBX,EAAc,aAAa,EAAE;AAAA,MAAA;AAAA,IAC/D;AAGF,WAAIA,EAAc,kBAAkB,gBAClC4B,EAAM,KAAK;AAAA,MACT,MAAMjB,EAAE,mBAAmB;AAAA,MAC3B,aAAaA,EAAE,eAAeX,EAAc,aAAa,IAAI;AAAA,QAC3D,aAAaA,EAAc;AAAA,QAC3B,iBAAiBA,EAAc;AAAA,MAAA,CAChC;AAAA,IAAA,CACF,GAEGA,EAAc,aAChB4B,EAAM,KAAK;AAAA,MACT,MAAMjB,EAAE,WAAW;AAAA,MACnB,aAAaX,EAAc;AAAA,IAAA,CAC5B,IAIE4B;AAAA,EACT,GAAG,CAAC5B,GAAeW,CAAC,CAAC,GAEfkB,IAAgBd,EAAQ,MAAM;AAClC,QAAI,CAACd,EAAgB,QAAO,CAAA;AAE5B,UAAM2B,IAAiD,CAAA;AAEvD,WAAIF,KACFE,EAAM,KAAK;AAAA,MACT,MAAMjB,EAAE,8BAA8B;AAAA,MACtC,aACEV,EAAe,0BAA0B,OACrCU,EAAE,sCAAsC;AAAA,QACtC,OAAOV,EAAe;AAAA,MAAA,CACvB,IACDU,EAAE,kCAAkC;AAAA,IAAA,CAC3C,GAGHiB,EAAM;AAAA,MACJ;AAAA,QACE,MAAMjB,EAAE,gBAAgB;AAAA,QACxB,aACEV,EAAe,YAAY,OACvBU,EAAE,wBAAwB,EAAE,OAAOV,EAAe,UAAU,IAC5DU,EAAE,oBAAoB;AAAA,MAAA;AAAA,MAE9B;AAAA,QACE,MAAMA,EAAE,2BAA2B;AAAA,QACnC,aACEV,EAAe,uBAAuB,OAClCU,EAAE,iCAAiC,EAAE,OAAOV,EAAe,qBAAqB,IAChFU,EAAE,6BAA6B;AAAA,MAAA;AAAA,IACvC,GAGEe,KACFE,EAAM,KAAK;AAAA,MACT,MAAMjB,EAAE,gCAAgC;AAAA,MACxC,aACEV,EAAe,4BAA4B,OACvCU,EAAE,uCAAuC;AAAA,QACvC,OAAOV,EAAe;AAAA,MAAA,CACvB,IACDU,EAAE,mCAAmC;AAAA,IAAA,CAC5C,GAGHiB,EAAM,KAAK;AAAA,MACT,MAAMjB,EAAE,4BAA4B;AAAA,MACpC,aAAaV,EAAe,uBACxBU,EAAE,0BAA0B,IAC5BA,EAAE,yBAAyB;AAAA,IAAA,CAChC,GAEMiB;AAAA,EACT,GAAG,CAAC3B,GAAgBU,GAAGe,CAAwB,CAAC;AAEhD,SACE,gBAAAR,EAAC,SAAI,WAAWY,EAAO,gBACrB,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWD,EAAO,OACrB,UAAA;AAAA,IAAA,gBAAAZ,EAACG,KAAI,QAAQ,gBAAAH,EAACI,KAAU,OAAOX,EAAE,SAAS,EAAA,CAAG,GAAI,aAAW,IAC1D,UAAA,gBAAAO,EAACK,KAAgB,OAAOI,GAAa,gBAAgB,IAAO,QAAO,WAAU,EAAA,CAC/E;AAAA,IAEC,CAACd,KAAeZ,KACf,gBAAAiB;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,QACE,gBAAAH;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,OAAOX,EAAE,qBAAqB;AAAA,YAC9B,QACET,KACE,gBAAAgB,EAACM,GAAA,EAAO,SAAQ,aAAY,SAAStB,GAClC,UAAAS,EAAE,mBAAmB,EAAA,CACxB;AAAA,UAAA;AAAA,QAAA;AAAA,QAKR,aAAW;AAAA,QAEX,4BAACY,GAAA,EAAgB,OAAOM,GAAe,gBAAgB,IAAO,QAAO,UAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACjF,EAAA,CAEJ,EAAA,CACF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"TimeOffPolicyDetailPresentation.js","sources":["../../../../src/components/TimeOff/TimeOffPolicyDetail/TimeOffPolicyDetailPresentation.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { PolicyDetailLayout } from '../shared/PolicyDetailLayout'\nimport type {\n TimeOffPolicyDetailPresentationProps,\n TimeOffPolicyDetailEmployee,\n PolicyDetails,\n PolicySettingsDisplay,\n} from './TimeOffPolicyDetailTypes'\nimport styles from './TimeOffPolicyDetail.module.scss'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\n\nconst DETAILS_TAB_ID = 'details'\n\n/**\n * Presentational detail view for sick and vacation time-off policies.\n *\n * @remarks\n * Displays policy configuration and accrual settings in a tabbed interface alongside the\n * list of enrolled employees. Provides actions for editing the policy, changing settings,\n * adding employees, removing employees, and editing individual employee balances. This\n * component is fully controlled — pass in the data, selected tab, and dialog state and wire\n * up the callbacks. The corresponding container component is {@link TimeOffPolicyDetail}.\n *\n * @param input - See {@link TimeOffPolicyDetailPresentationProps}.\n * @returns The rendered detail view.\n * @public\n */\nexport function TimeOffPolicyDetailPresentation({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n policyDetails,\n policySettings,\n onChangeSettings,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n className,\n}: TimeOffPolicyDetailPresentationProps) {\n useI18n('Company.TimeOff.TimeOffPolicyDetails')\n const { t } = useTranslation('Company.TimeOff.TimeOffPolicyDetails')\n\n const isUnlimited = policyDetails.accrualMethod === 'unlimited'\n\n const balanceColumn = useMemo(\n () =>\n isUnlimited\n ? []\n : [\n {\n key: 'balance' as keyof TimeOffPolicyDetailEmployee,\n title: t('employeeTable.balance'),\n render: (item: TimeOffPolicyDetailEmployee) => item.balance ?? '-',\n },\n ],\n [t, isUnlimited],\n )\n\n const detailsTabContent = (\n <DetailsTab\n policyDetails={policyDetails}\n policySettings={policySettings}\n onChangeSettings={onChangeSettings}\n />\n )\n\n return (\n <PolicyDetailLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n firstTab={{\n id: DETAILS_TAB_ID,\n label: t('tabs.policyDetails'),\n content: detailsTabContent,\n }}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n employees={{\n ...employees,\n additionalColumns: balanceColumn,\n }}\n onAddEmployee={onAddEmployee}\n removeDialog={removeDialog}\n successAlert={successAlert}\n onDismissAlert={onDismissAlert}\n className={className}\n />\n )\n}\n\nfunction DetailsTab({\n policyDetails,\n policySettings,\n onChangeSettings,\n}: {\n policyDetails: PolicyDetails\n policySettings?: PolicySettingsDisplay\n onChangeSettings?: () => void\n}) {\n useI18n('Company.TimeOff.TimeOffPolicyDetails')\n const { t } = useTranslation('Company.TimeOff.TimeOffPolicyDetails')\n const { Box, BoxHeader, DescriptionList, Button } = useComponentContext()\n\n const isUnlimited = policyDetails.accrualMethod === 'unlimited'\n const isHoursWorked =\n policyDetails.accrualMethod === 'perHourWorked' ||\n policyDetails.accrualMethod === 'perHourWorkedNoOvertime' ||\n policyDetails.accrualMethod === 'perHourPaid' ||\n policyDetails.accrualMethod === 'perHourPaidNoOvertime'\n const showAccrualMaxAndWaiting = isHoursWorked || policyDetails.accrualMethod === 'perPayPeriod'\n\n const detailItems = useMemo(() => {\n const items: { term: string; description: string }[] = [\n {\n term: t('accrualMethod.label'),\n description: t(`accrualMethod.${policyDetails.accrualMethod}`),\n },\n ]\n\n if (policyDetails.accrualMethod !== 'unlimited') {\n items.push({\n term: t('accrualRate.label'),\n description: t(`accrualRate.${policyDetails.accrualMethod}`, {\n accrualRate: policyDetails.accrualRate,\n accrualRateUnit: policyDetails.accrualRateUnit,\n }),\n })\n\n if (policyDetails.resetDate) {\n items.push({\n term: t('resetDate'),\n description: policyDetails.resetDate,\n })\n }\n }\n\n return items\n }, [policyDetails, t])\n\n const settingsItems = useMemo(() => {\n if (!policySettings) return []\n\n const items: { term: string; description: string }[] = []\n\n if (showAccrualMaxAndWaiting) {\n items.push({\n term: t('maxAccrualHoursPerYear.label'),\n description:\n policySettings.maxAccrualHoursPerYear != null\n ? t('maxAccrualHoursPerYear.withMaximum', {\n count: policySettings.maxAccrualHoursPerYear,\n })\n : t('maxAccrualHoursPerYear.noMaximum'),\n })\n }\n\n items.push(\n {\n term: t('maxHours.label'),\n description:\n policySettings.maxHours != null\n ? t('maxHours.withMaximum', { count: policySettings.maxHours })\n : t('maxHours.noMaximum'),\n },\n {\n term: t('carryoverLimitHours.label'),\n description:\n policySettings.carryoverLimitHours != null\n ? t('carryoverLimitHours.withLimit', { count: policySettings.carryoverLimitHours })\n : t('carryoverLimitHours.noLimit'),\n },\n )\n\n if (showAccrualMaxAndWaiting) {\n items.push({\n term: t('accrualWaitingPeriodDays.label'),\n description:\n policySettings.accrualWaitingPeriodDays != null\n ? t('accrualWaitingPeriodDays.withPeriod', {\n count: policySettings.accrualWaitingPeriodDays,\n })\n : t('accrualWaitingPeriodDays.noPeriod'),\n })\n }\n\n items.push({\n term: t('paidOutOnTermination.label'),\n description: policySettings.paidOutOnTermination\n ? t('paidOutOnTermination.yes')\n : t('paidOutOnTermination.no'),\n })\n\n return items\n }, [policySettings, t, showAccrualMaxAndWaiting])\n\n return (\n <div className={styles.cardsContainer}>\n <div className={styles.cards}>\n <Box header={<BoxHeader title={t('details')} />} withPadding>\n <DescriptionList items={detailItems} showSeparators={false} layout=\"stacked\" />\n </Box>\n\n {!isUnlimited && policySettings && (\n <Box\n header={\n <BoxHeader\n title={t('policySettingsTitle')}\n action={\n onChangeSettings && (\n <Button variant=\"secondary\" onClick={onChangeSettings}>\n {t('changeSettingsCta')}\n </Button>\n )\n }\n />\n }\n withPadding\n >\n <DescriptionList items={settingsItems} showSeparators={false} layout=\"stacked\" />\n </Box>\n )}\n </div>\n </div>\n )\n}\n"],"names":["DETAILS_TAB_ID","TimeOffPolicyDetailPresentation","title","subtitle","onBack","backLabel","actions","policyDetails","policySettings","onChangeSettings","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","className","useI18n","t","useTranslation","isUnlimited","balanceColumn","useMemo","item","detailsTabContent","jsx","DetailsTab","PolicyDetailLayout","Box","BoxHeader","DescriptionList","Button","useComponentContext","showAccrualMaxAndWaiting","detailItems","items","settingsItems","styles","jsxs"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { jsx as i, jsxs as
|
|
2
|
-
import { useTranslation as
|
|
3
|
-
import { EmployeeTable as
|
|
4
|
-
import { EmptyData as
|
|
5
|
-
import { useComponentContext as
|
|
6
|
-
import { useI18n as
|
|
7
|
-
import
|
|
8
|
-
import { DetailViewLayout as
|
|
9
|
-
const
|
|
10
|
-
function
|
|
1
|
+
import { jsx as i, jsxs as b, Fragment as S } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation as D } from "react-i18next";
|
|
3
|
+
import { EmployeeTable as L } from "../EmployeeTable/EmployeeTable.js";
|
|
4
|
+
import { EmptyData as O } from "../../../Common/EmptyData/EmptyData.js";
|
|
5
|
+
import { useComponentContext as T } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
6
|
+
import { useI18n as x } from "../../../../i18n/I18n.js";
|
|
7
|
+
import A from "../../../../assets/icons/plus-circle.svg.js";
|
|
8
|
+
import { DetailViewLayout as v } from "../../../Common/DetailViewLayout/DetailViewLayout.js";
|
|
9
|
+
const F = "employees";
|
|
10
|
+
function _({
|
|
11
11
|
title: r,
|
|
12
12
|
subtitle: c,
|
|
13
13
|
onBack: m,
|
|
@@ -20,28 +20,29 @@ function N({
|
|
|
20
20
|
onAddEmployee: n,
|
|
21
21
|
removeDialog: o,
|
|
22
22
|
successAlert: l,
|
|
23
|
-
onDismissAlert: u
|
|
23
|
+
onDismissAlert: u,
|
|
24
|
+
className: y
|
|
24
25
|
}) {
|
|
25
|
-
|
|
26
|
-
const { t } =
|
|
27
|
-
|
|
26
|
+
x("Company.TimeOff.PolicyDetail");
|
|
27
|
+
const { t } = D("Company.TimeOff.PolicyDetail"), { Alert: C, Dialog: f, Button: E } = T(), g = e.emptyState ?? (n ? () => /* @__PURE__ */ i(O, { title: t("emptyEmployees.title"), children: /* @__PURE__ */ i(
|
|
28
|
+
E,
|
|
28
29
|
{
|
|
29
30
|
variant: "secondary",
|
|
30
|
-
icon: /* @__PURE__ */ i(
|
|
31
|
+
icon: /* @__PURE__ */ i(A, { "aria-hidden": !0 }),
|
|
31
32
|
onClick: n,
|
|
32
33
|
children: t("emptyEmployees.addEmployeeCta")
|
|
33
34
|
}
|
|
34
|
-
) }) : void 0),
|
|
35
|
+
) }) : void 0), P = [
|
|
35
36
|
{
|
|
36
37
|
id: a.id,
|
|
37
38
|
label: a.label,
|
|
38
39
|
content: a.content
|
|
39
40
|
},
|
|
40
41
|
{
|
|
41
|
-
id:
|
|
42
|
+
id: F,
|
|
42
43
|
label: t("tabs.employees"),
|
|
43
44
|
content: /* @__PURE__ */ i(
|
|
44
|
-
|
|
45
|
+
L,
|
|
45
46
|
{
|
|
46
47
|
data: e.data,
|
|
47
48
|
searchValue: e.searchValue,
|
|
@@ -51,30 +52,31 @@ function N({
|
|
|
51
52
|
itemMenu: e.itemMenu,
|
|
52
53
|
pagination: e.pagination,
|
|
53
54
|
isFetching: e.isFetching,
|
|
54
|
-
emptyState:
|
|
55
|
+
emptyState: g,
|
|
55
56
|
additionalColumns: e.additionalColumns,
|
|
56
57
|
hideJobTitle: e.hideJobTitle
|
|
57
58
|
}
|
|
58
59
|
)
|
|
59
60
|
}
|
|
60
61
|
];
|
|
61
|
-
return /* @__PURE__ */
|
|
62
|
-
l && /* @__PURE__ */ i(
|
|
62
|
+
return /* @__PURE__ */ b(S, { children: [
|
|
63
|
+
l && /* @__PURE__ */ i(C, { status: "success", label: l, onDismiss: u }),
|
|
63
64
|
/* @__PURE__ */ i(
|
|
64
|
-
|
|
65
|
+
v,
|
|
65
66
|
{
|
|
66
67
|
title: r,
|
|
67
68
|
subtitle: c,
|
|
68
69
|
onBack: m,
|
|
69
70
|
backLabel: s,
|
|
70
71
|
actions: p,
|
|
71
|
-
tabs:
|
|
72
|
+
tabs: P,
|
|
72
73
|
selectedTabId: d,
|
|
73
|
-
onTabChange: h
|
|
74
|
+
onTabChange: h,
|
|
75
|
+
className: y
|
|
74
76
|
}
|
|
75
77
|
),
|
|
76
78
|
/* @__PURE__ */ i(
|
|
77
|
-
|
|
79
|
+
f,
|
|
78
80
|
{
|
|
79
81
|
isOpen: o.isOpen,
|
|
80
82
|
onClose: o.onClose,
|
|
@@ -90,6 +92,6 @@ function N({
|
|
|
90
92
|
] });
|
|
91
93
|
}
|
|
92
94
|
export {
|
|
93
|
-
|
|
95
|
+
_ as PolicyDetailLayout
|
|
94
96
|
};
|
|
95
97
|
//# sourceMappingURL=PolicyDetailLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolicyDetailLayout.js","sources":["../../../../../src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeTableItem } from '../EmployeeTable/EmployeeTableTypes'\nimport { EmployeeTable } from '../EmployeeTable/EmployeeTable'\nimport type { PolicyDetailLayoutProps } from './PolicyDetailLayoutTypes'\nimport { DetailViewLayout, EmptyData } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\nconst EMPLOYEES_TAB_ID = 'employees'\n\n/** @internal */\nexport function PolicyDetailLayout<T extends EmployeeTableItem>({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n firstTab,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n}: PolicyDetailLayoutProps<T>) {\n useI18n('Company.TimeOff.PolicyDetail')\n const { t } = useTranslation('Company.TimeOff.PolicyDetail')\n const { Alert, Dialog, Button } = useComponentContext()\n\n const emptyEmployeesState =\n employees.emptyState ??\n (onAddEmployee\n ? () => (\n <EmptyData title={t('emptyEmployees.title')}>\n <Button\n variant=\"secondary\"\n icon={<PlusCircleIcon aria-hidden />}\n onClick={onAddEmployee}\n >\n {t('emptyEmployees.addEmployeeCta')}\n </Button>\n </EmptyData>\n )\n : undefined)\n\n const tabs = [\n {\n id: firstTab.id,\n label: firstTab.label,\n content: firstTab.content,\n },\n {\n id: EMPLOYEES_TAB_ID,\n label: t('tabs.employees'),\n content: (\n <EmployeeTable<T>\n data={employees.data}\n searchValue={employees.searchValue}\n onSearchChange={employees.onSearchChange}\n onSearchClear={employees.onSearchClear}\n searchPlaceholder={employees.searchPlaceholder}\n itemMenu={employees.itemMenu}\n pagination={employees.pagination}\n isFetching={employees.isFetching}\n emptyState={emptyEmployeesState}\n additionalColumns={employees.additionalColumns}\n hideJobTitle={employees.hideJobTitle}\n />\n ),\n },\n ]\n\n return (\n <>\n {successAlert && <Alert status=\"success\" label={successAlert} onDismiss={onDismissAlert} />}\n\n <DetailViewLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n tabs={tabs}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n />\n\n <Dialog\n isOpen={removeDialog.isOpen}\n onClose={removeDialog.onClose}\n onPrimaryActionClick={removeDialog.onConfirm}\n isPrimaryActionLoading={removeDialog.isPending}\n isDestructive\n title={t('removeEmployeeDialog.title', { name: removeDialog.employeeName })}\n primaryActionLabel={t('removeEmployeeDialog.confirmCta')}\n closeActionLabel={t('removeEmployeeDialog.cancelCta')}\n >\n {t('removeEmployeeDialog.description', { name: removeDialog.employeeName })}\n </Dialog>\n </>\n )\n}\n"],"names":["EMPLOYEES_TAB_ID","PolicyDetailLayout","title","subtitle","onBack","backLabel","actions","firstTab","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","useI18n","useTranslation","Alert","Dialog","Button","useComponentContext","emptyEmployeesState","EmptyData","jsx","PlusCircleIcon","tabs","EmployeeTable","jsxs","Fragment","DetailViewLayout"],"mappings":";;;;;;;;AASA,MAAMA,IAAmB;AAGlB,SAASC,EAAgD;AAAA,EAC9D,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AACF,GAA+B;AAC7B,EAAAC,EAAQ,8BAA8B;AACtC,QAAM,EAAE,EAAA,IAAMC,EAAe,8BAA8B,GACrD,EAAE,OAAAC,GAAO,QAAAC,GAAQ,QAAAC,EAAA,IAAWC,EAAA,GAE5BC,
|
|
1
|
+
{"version":3,"file":"PolicyDetailLayout.js","sources":["../../../../../src/components/TimeOff/shared/PolicyDetailLayout/PolicyDetailLayout.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { EmployeeTableItem } from '../EmployeeTable/EmployeeTableTypes'\nimport { EmployeeTable } from '../EmployeeTable/EmployeeTable'\nimport type { PolicyDetailLayoutProps } from './PolicyDetailLayoutTypes'\nimport { DetailViewLayout, EmptyData } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\n\nconst EMPLOYEES_TAB_ID = 'employees'\n\n/** @internal */\nexport function PolicyDetailLayout<T extends EmployeeTableItem>({\n title,\n subtitle,\n onBack,\n backLabel,\n actions,\n firstTab,\n selectedTabId,\n onTabChange,\n employees,\n onAddEmployee,\n removeDialog,\n successAlert,\n onDismissAlert,\n className,\n}: PolicyDetailLayoutProps<T>) {\n useI18n('Company.TimeOff.PolicyDetail')\n const { t } = useTranslation('Company.TimeOff.PolicyDetail')\n const { Alert, Dialog, Button } = useComponentContext()\n\n const emptyEmployeesState =\n employees.emptyState ??\n (onAddEmployee\n ? () => (\n <EmptyData title={t('emptyEmployees.title')}>\n <Button\n variant=\"secondary\"\n icon={<PlusCircleIcon aria-hidden />}\n onClick={onAddEmployee}\n >\n {t('emptyEmployees.addEmployeeCta')}\n </Button>\n </EmptyData>\n )\n : undefined)\n\n const tabs = [\n {\n id: firstTab.id,\n label: firstTab.label,\n content: firstTab.content,\n },\n {\n id: EMPLOYEES_TAB_ID,\n label: t('tabs.employees'),\n content: (\n <EmployeeTable<T>\n data={employees.data}\n searchValue={employees.searchValue}\n onSearchChange={employees.onSearchChange}\n onSearchClear={employees.onSearchClear}\n searchPlaceholder={employees.searchPlaceholder}\n itemMenu={employees.itemMenu}\n pagination={employees.pagination}\n isFetching={employees.isFetching}\n emptyState={emptyEmployeesState}\n additionalColumns={employees.additionalColumns}\n hideJobTitle={employees.hideJobTitle}\n />\n ),\n },\n ]\n\n return (\n <>\n {successAlert && <Alert status=\"success\" label={successAlert} onDismiss={onDismissAlert} />}\n\n <DetailViewLayout\n title={title}\n subtitle={subtitle}\n onBack={onBack}\n backLabel={backLabel}\n actions={actions}\n tabs={tabs}\n selectedTabId={selectedTabId}\n onTabChange={onTabChange}\n className={className}\n />\n\n <Dialog\n isOpen={removeDialog.isOpen}\n onClose={removeDialog.onClose}\n onPrimaryActionClick={removeDialog.onConfirm}\n isPrimaryActionLoading={removeDialog.isPending}\n isDestructive\n title={t('removeEmployeeDialog.title', { name: removeDialog.employeeName })}\n primaryActionLabel={t('removeEmployeeDialog.confirmCta')}\n closeActionLabel={t('removeEmployeeDialog.cancelCta')}\n >\n {t('removeEmployeeDialog.description', { name: removeDialog.employeeName })}\n </Dialog>\n </>\n )\n}\n"],"names":["EMPLOYEES_TAB_ID","PolicyDetailLayout","title","subtitle","onBack","backLabel","actions","firstTab","selectedTabId","onTabChange","employees","onAddEmployee","removeDialog","successAlert","onDismissAlert","className","useI18n","useTranslation","Alert","Dialog","Button","useComponentContext","emptyEmployeesState","EmptyData","jsx","PlusCircleIcon","tabs","EmployeeTable","jsxs","Fragment","DetailViewLayout"],"mappings":";;;;;;;;AASA,MAAMA,IAAmB;AAGlB,SAASC,EAAgD;AAAA,EAC9D,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AACF,GAA+B;AAC7B,EAAAC,EAAQ,8BAA8B;AACtC,QAAM,EAAE,EAAA,IAAMC,EAAe,8BAA8B,GACrD,EAAE,OAAAC,GAAO,QAAAC,GAAQ,QAAAC,EAAA,IAAWC,EAAA,GAE5BC,IACJZ,EAAU,eACTC,IACG,wBACGY,GAAA,EAAU,OAAO,EAAE,sBAAsB,GACxC,UAAA,gBAAAC;AAAA,IAACJ;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAM,gBAAAI,EAACC,GAAA,EAAe,eAAW,GAAA,CAAC;AAAA,MAClC,SAASd;AAAA,MAER,YAAE,+BAA+B;AAAA,IAAA;AAAA,EAAA,GAEtC,IAEF,SAEAe,IAAO;AAAA,IACX;AAAA,MACE,IAAInB,EAAS;AAAA,MACb,OAAOA,EAAS;AAAA,MAChB,SAASA,EAAS;AAAA,IAAA;AAAA,IAEpB;AAAA,MACE,IAAIP;AAAA,MACJ,OAAO,EAAE,gBAAgB;AAAA,MACzB,SACE,gBAAAwB;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,MAAMjB,EAAU;AAAA,UAChB,aAAaA,EAAU;AAAA,UACvB,gBAAgBA,EAAU;AAAA,UAC1B,eAAeA,EAAU;AAAA,UACzB,mBAAmBA,EAAU;AAAA,UAC7B,UAAUA,EAAU;AAAA,UACpB,YAAYA,EAAU;AAAA,UACtB,YAAYA,EAAU;AAAA,UACtB,YAAYY;AAAA,UACZ,mBAAmBZ,EAAU;AAAA,UAC7B,cAAcA,EAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1B;AAAA,EAEJ;AAGF,SACE,gBAAAkB,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAhB,uBAAiBK,GAAA,EAAM,QAAO,WAAU,OAAOL,GAAc,WAAWC,GAAgB;AAAA,IAEzF,gBAAAU;AAAA,MAACM;AAAA,MAAA;AAAA,QACC,OAAA5B;AAAA,QACA,UAAAC;AAAA,QACA,QAAAC;AAAA,QACA,WAAAC;AAAA,QACA,SAAAC;AAAA,QACA,MAAAoB;AAAA,QACA,eAAAlB;AAAA,QACA,aAAAC;AAAA,QACA,WAAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAGF,gBAAAS;AAAA,MAACL;AAAA,MAAA;AAAA,QACC,QAAQP,EAAa;AAAA,QACrB,SAASA,EAAa;AAAA,QACtB,sBAAsBA,EAAa;AAAA,QACnC,wBAAwBA,EAAa;AAAA,QACrC,eAAa;AAAA,QACb,OAAO,EAAE,8BAA8B,EAAE,MAAMA,EAAa,cAAc;AAAA,QAC1E,oBAAoB,EAAE,iCAAiC;AAAA,QACvD,kBAAkB,EAAE,gCAAgC;AAAA,QAEnD,YAAE,oCAAoC,EAAE,MAAMA,EAAa,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,EAC5E,GACF;AAEJ;"}
|
|
@@ -1,43 +1,44 @@
|
|
|
1
1
|
import { jsx as u } from "react/jsx-runtime";
|
|
2
|
-
import { QueryClientProvider as
|
|
2
|
+
import { QueryClientProvider as k } from "@tanstack/react-query";
|
|
3
3
|
import { GustoEmbeddedProvider as R } from "@gusto/embedded-api/react-query/_context";
|
|
4
|
-
import { GustoEmbeddedCore as
|
|
5
|
-
import { SDKHooks as
|
|
6
|
-
import { useMemo as
|
|
7
|
-
import { apiVersionHook as
|
|
8
|
-
import {
|
|
9
|
-
|
|
4
|
+
import { GustoEmbeddedCore as g } from "@gusto/embedded-api/core";
|
|
5
|
+
import { SDKHooks as q } from "@gusto/embedded-api/hooks/hooks";
|
|
6
|
+
import { useMemo as m } from "react";
|
|
7
|
+
import { apiVersionHook as C } from "./apiVersionHook.js";
|
|
8
|
+
import { apiVersionMismatchHook as a } from "./apiVersionMismatchHook.js";
|
|
9
|
+
import { createSdkQueryClient as b } from "./createSdkQueryClient.js";
|
|
10
|
+
function I({
|
|
10
11
|
url: s,
|
|
11
12
|
headers: i,
|
|
12
13
|
hooks: e,
|
|
13
|
-
children:
|
|
14
|
+
children: d,
|
|
14
15
|
queryClient: f
|
|
15
16
|
}) {
|
|
16
|
-
const
|
|
17
|
-
const t = new
|
|
17
|
+
const p = m(() => {
|
|
18
|
+
const t = new g({
|
|
18
19
|
serverURL: s
|
|
19
|
-
}),
|
|
20
|
-
if (
|
|
21
|
-
const
|
|
22
|
-
beforeRequest: (
|
|
23
|
-
c && n.headers.set(
|
|
20
|
+
}), r = t._options.hooks || new q();
|
|
21
|
+
if (r.registerBeforeRequestHook(C), r.registerAfterSuccessHook(a), r.registerAfterErrorHook(a), i) {
|
|
22
|
+
const o = {
|
|
23
|
+
beforeRequest: (l, n) => (new Headers(i).forEach((c, E) => {
|
|
24
|
+
c && n.headers.set(E, c);
|
|
24
25
|
}), n)
|
|
25
26
|
};
|
|
26
|
-
|
|
27
|
+
r.registerBeforeRequestHook(o);
|
|
27
28
|
}
|
|
28
|
-
return e?.beforeCreateRequest && e.beforeCreateRequest.forEach((
|
|
29
|
-
|
|
30
|
-
}), e?.beforeRequest && e.beforeRequest.forEach((
|
|
31
|
-
|
|
32
|
-
}), e?.afterSuccess && e.afterSuccess.forEach((
|
|
33
|
-
|
|
34
|
-
}), e?.afterError && e.afterError.forEach((
|
|
35
|
-
|
|
36
|
-
}), t._options.hooks || (t._options.hooks =
|
|
37
|
-
}, [s, i, e]),
|
|
38
|
-
return /* @__PURE__ */ u(
|
|
29
|
+
return e?.beforeCreateRequest && e.beforeCreateRequest.forEach((o) => {
|
|
30
|
+
r.registerBeforeCreateRequestHook(o);
|
|
31
|
+
}), e?.beforeRequest && e.beforeRequest.forEach((o) => {
|
|
32
|
+
r.registerBeforeRequestHook(o);
|
|
33
|
+
}), e?.afterSuccess && e.afterSuccess.forEach((o) => {
|
|
34
|
+
r.registerAfterSuccessHook(o);
|
|
35
|
+
}), e?.afterError && e.afterError.forEach((o) => {
|
|
36
|
+
r.registerAfterErrorHook(o);
|
|
37
|
+
}), t._options.hooks || (t._options.hooks = r), t;
|
|
38
|
+
}, [s, i, e]), H = m(() => f ?? b(), [f]);
|
|
39
|
+
return /* @__PURE__ */ u(k, { client: H, children: /* @__PURE__ */ u(R, { client: p, children: d }) });
|
|
39
40
|
}
|
|
40
41
|
export {
|
|
41
|
-
|
|
42
|
+
I as ApiProvider
|
|
42
43
|
};
|
|
43
44
|
//# sourceMappingURL=ApiProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiProvider.js","sources":["../../../src/contexts/ApiProvider/ApiProvider.tsx"],"sourcesContent":["import { QueryClientProvider, type QueryClient } from '@tanstack/react-query'\nimport { GustoEmbeddedProvider } from '@gusto/embedded-api/react-query/_context'\nimport { GustoEmbeddedCore } from '@gusto/embedded-api/core'\nimport { SDKHooks as NativeSDKHooks } from '@gusto/embedded-api/hooks/hooks'\nimport { useMemo } from 'react'\nimport { apiVersionHook } from './apiVersionHook'\nimport { createSdkQueryClient } from './createSdkQueryClient'\nimport type { SDKHooks, BeforeRequestHook } from '@/types/hooks'\n\n/**\n * Props for {@link ApiProvider}.\n *\n * @internal\n */\nexport interface ApiProviderProps {\n /** Base URL the SDK uses for all `@gusto/embedded-api-v-2026-06-15` requests. */\n url: string\n /** Default headers applied to every SDK request, in addition to the `X-Gusto-API-Version` header set automatically. */\n headers?: HeadersInit\n /** Lifecycle hooks for intercepting and modifying SDK requests and responses. */\n hooks?: SDKHooks\n /** Subtree that renders inside the API + React Query providers. */\n children: React.ReactNode\n /** Optional React Query client. When omitted, a client is created with the SDK's defaults (auto-invalidation on mutation success). */\n queryClient?: QueryClient\n}\n\n/**\n * Wires the `@gusto/embedded-api-v-2026-06-15` client and a React Query client into the React tree.\n *\n * @remarks\n * Registers the SDK's `X-Gusto-API-Version` header on every request, applies any default `headers
|
|
1
|
+
{"version":3,"file":"ApiProvider.js","sources":["../../../src/contexts/ApiProvider/ApiProvider.tsx"],"sourcesContent":["import { QueryClientProvider, type QueryClient } from '@tanstack/react-query'\nimport { GustoEmbeddedProvider } from '@gusto/embedded-api/react-query/_context'\nimport { GustoEmbeddedCore } from '@gusto/embedded-api/core'\nimport { SDKHooks as NativeSDKHooks } from '@gusto/embedded-api/hooks/hooks'\nimport { useMemo } from 'react'\nimport { apiVersionHook } from './apiVersionHook'\nimport { apiVersionMismatchHook } from './apiVersionMismatchHook'\nimport { createSdkQueryClient } from './createSdkQueryClient'\nimport type { SDKHooks, BeforeRequestHook } from '@/types/hooks'\n\n/**\n * Props for {@link ApiProvider}.\n *\n * @internal\n */\nexport interface ApiProviderProps {\n /** Base URL the SDK uses for all `@gusto/embedded-api-v-2026-06-15` requests. */\n url: string\n /** Default headers applied to every SDK request, in addition to the `X-Gusto-API-Version` header set automatically. */\n headers?: HeadersInit\n /** Lifecycle hooks for intercepting and modifying SDK requests and responses. */\n hooks?: SDKHooks\n /** Subtree that renders inside the API + React Query providers. */\n children: React.ReactNode\n /** Optional React Query client. When omitted, a client is created with the SDK's defaults (auto-invalidation on mutation success). */\n queryClient?: QueryClient\n}\n\n/**\n * Wires the `@gusto/embedded-api-v-2026-06-15` client and a React Query client into the React tree.\n *\n * @remarks\n * Registers the SDK's `X-Gusto-API-Version` header on every request, warns via `console.warn` if a\n * response reports a different `X-Gusto-API-Version` than was requested (e.g. a proxy rewriting the\n * header), applies any default `headers`, and registers user-supplied lifecycle hooks\n * (`beforeCreateRequest`, `beforeRequest`, `afterSuccess`, `afterError`). When no `queryClient` is\n * supplied, one is created with the SDK's defaults so\n * successful mutations under the `['@gusto/embedded-api-v-2026-06-15']` key invalidate every SDK\n * query automatically. Partners who supply their own `QueryClient` are responsible for matching that\n * contract.\n *\n * Typically wrapped by {@link GustoProvider}; use directly only when composing the provider stack\n * manually.\n *\n * @param props - See {@link ApiProviderProps}.\n * @returns A React subtree wrapped in `QueryClientProvider` and the embedded API context.\n * @internal\n */\nexport function ApiProvider({\n url,\n headers,\n hooks,\n children,\n queryClient: queryClientFromProps,\n}: ApiProviderProps) {\n const gustoClient = useMemo(() => {\n const client = new GustoEmbeddedCore({\n serverURL: url,\n })\n\n const sdkHooks = client._options.hooks || new NativeSDKHooks()\n\n sdkHooks.registerBeforeRequestHook(apiVersionHook)\n sdkHooks.registerAfterSuccessHook(apiVersionMismatchHook)\n sdkHooks.registerAfterErrorHook(apiVersionMismatchHook)\n\n if (headers) {\n const defaultHeaderHook: BeforeRequestHook = {\n beforeRequest: (context, request) => {\n const headersInstance = new Headers(headers)\n headersInstance.forEach((headerValue, headerName) => {\n if (headerValue) {\n request.headers.set(headerName, headerValue)\n }\n })\n return request\n },\n }\n sdkHooks.registerBeforeRequestHook(defaultHeaderHook)\n }\n\n if (hooks?.beforeCreateRequest) {\n hooks.beforeCreateRequest.forEach(hook => {\n sdkHooks.registerBeforeCreateRequestHook(hook)\n })\n }\n\n if (hooks?.beforeRequest) {\n hooks.beforeRequest.forEach(hook => {\n sdkHooks.registerBeforeRequestHook(hook)\n })\n }\n\n if (hooks?.afterSuccess) {\n hooks.afterSuccess.forEach(hook => {\n sdkHooks.registerAfterSuccessHook(hook)\n })\n }\n\n if (hooks?.afterError) {\n hooks.afterError.forEach(hook => {\n sdkHooks.registerAfterErrorHook(hook)\n })\n }\n\n if (!client._options.hooks) {\n client._options.hooks = sdkHooks\n }\n\n return client\n }, [url, headers, hooks])\n\n const queryClient = useMemo(() => {\n return queryClientFromProps ?? createSdkQueryClient()\n }, [queryClientFromProps])\n\n return (\n <QueryClientProvider client={queryClient}>\n <GustoEmbeddedProvider client={gustoClient}>{children}</GustoEmbeddedProvider>\n </QueryClientProvider>\n )\n}\n"],"names":["ApiProvider","url","headers","hooks","children","queryClientFromProps","gustoClient","useMemo","client","GustoEmbeddedCore","sdkHooks","NativeSDKHooks","apiVersionHook","apiVersionMismatchHook","defaultHeaderHook","context","request","headerValue","headerName","hook","queryClient","createSdkQueryClient","jsx","QueryClientProvider","GustoEmbeddedProvider"],"mappings":";;;;;;;;;AAgDO,SAASA,EAAY;AAAA,EAC1B,KAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAaC;AACf,GAAqB;AACnB,QAAMC,IAAcC,EAAQ,MAAM;AAChC,UAAMC,IAAS,IAAIC,EAAkB;AAAA,MACnC,WAAWR;AAAA,IAAA,CACZ,GAEKS,IAAWF,EAAO,SAAS,SAAS,IAAIG,EAAA;AAM9C,QAJAD,EAAS,0BAA0BE,CAAc,GACjDF,EAAS,yBAAyBG,CAAsB,GACxDH,EAAS,uBAAuBG,CAAsB,GAElDX,GAAS;AACX,YAAMY,IAAuC;AAAA,QAC3C,eAAe,CAACC,GAASC,OACC,IAAI,QAAQd,CAAO,EAC3B,QAAQ,CAACe,GAAaC,MAAe;AACnD,UAAID,KACFD,EAAQ,QAAQ,IAAIE,GAAYD,CAAW;AAAA,QAE/C,CAAC,GACMD;AAAA,MACT;AAEF,MAAAN,EAAS,0BAA0BI,CAAiB;AAAA,IACtD;AAEA,WAAIX,GAAO,uBACTA,EAAM,oBAAoB,QAAQ,CAAAgB,MAAQ;AACxC,MAAAT,EAAS,gCAAgCS,CAAI;AAAA,IAC/C,CAAC,GAGChB,GAAO,iBACTA,EAAM,cAAc,QAAQ,CAAAgB,MAAQ;AAClC,MAAAT,EAAS,0BAA0BS,CAAI;AAAA,IACzC,CAAC,GAGChB,GAAO,gBACTA,EAAM,aAAa,QAAQ,CAAAgB,MAAQ;AACjC,MAAAT,EAAS,yBAAyBS,CAAI;AAAA,IACxC,CAAC,GAGChB,GAAO,cACTA,EAAM,WAAW,QAAQ,CAAAgB,MAAQ;AAC/B,MAAAT,EAAS,uBAAuBS,CAAI;AAAA,IACtC,CAAC,GAGEX,EAAO,SAAS,UACnBA,EAAO,SAAS,QAAQE,IAGnBF;AAAA,EACT,GAAG,CAACP,GAAKC,GAASC,CAAK,CAAC,GAElBiB,IAAcb,EAAQ,MACnBF,KAAwBgB,EAAA,GAC9B,CAAChB,CAAoB,CAAC;AAEzB,SACE,gBAAAiB,EAACC,KAAoB,QAAQH,GAC3B,4BAACI,GAAA,EAAsB,QAAQlB,GAAc,UAAAF,EAAA,CAAS,EAAA,CACxD;AAEJ;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { API_VERSION as s } from "./apiVersion.js";
|
|
2
|
+
function t(r, e) {
|
|
3
|
+
const o = e?.headers.get("X-Gusto-API-Version");
|
|
4
|
+
o && o !== s && console.warn(
|
|
5
|
+
`[@gusto/embedded-react-sdk] Requested API version ${s} for "${r}", but the response reported version ${o}. This usually means something between the SDK and Gusto (e.g. a proxy) is rewriting the X-Gusto-API-Version header, which can cause the response to be parsed against the wrong schema.`
|
|
6
|
+
);
|
|
7
|
+
}
|
|
8
|
+
const a = {
|
|
9
|
+
afterSuccess: (r, e) => (t(r.operationID, e), e),
|
|
10
|
+
afterError: (r, e, o) => (t(r.operationID, e), { response: e, error: o })
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
a as apiVersionMismatchHook
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=apiVersionMismatchHook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiVersionMismatchHook.js","sources":["../../../src/contexts/ApiProvider/apiVersionMismatchHook.ts"],"sourcesContent":["import { API_VERSION } from './apiVersion'\nimport type { AfterErrorHook, AfterSuccessHook } from '@/types/hooks'\n\nfunction warnOnVersionMismatch(operationID: string, response: Response | null) {\n const responseVersion = response?.headers.get('X-Gusto-API-Version')\n if (responseVersion && responseVersion !== API_VERSION) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@gusto/embedded-react-sdk] Requested API version ${API_VERSION} for \"${operationID}\", but the response reported version ${responseVersion}. This usually means something between the SDK and Gusto (e.g. a proxy) is rewriting the X-Gusto-API-Version header, which can cause the response to be parsed against the wrong schema.`,\n )\n }\n}\n\n/** @internal */\nexport const apiVersionMismatchHook: AfterSuccessHook & AfterErrorHook = {\n afterSuccess: (context, response) => {\n warnOnVersionMismatch(context.operationID, response)\n return response\n },\n afterError: (context, response, error) => {\n warnOnVersionMismatch(context.operationID, response)\n return { response, error }\n },\n}\n"],"names":["warnOnVersionMismatch","operationID","response","responseVersion","API_VERSION","apiVersionMismatchHook","context","error"],"mappings":";AAGA,SAASA,EAAsBC,GAAqBC,GAA2B;AAC7E,QAAMC,IAAkBD,GAAU,QAAQ,IAAI,qBAAqB;AACnE,EAAIC,KAAmBA,MAAoBC,KAEzC,QAAQ;AAAA,IACN,qDAAqDA,CAAW,SAASH,CAAW,wCAAwCE,CAAe;AAAA,EAAA;AAGjJ;AAGO,MAAME,IAA4D;AAAA,EACvE,cAAc,CAACC,GAASJ,OACtBF,EAAsBM,EAAQ,aAAaJ,CAAQ,GAC5CA;AAAA,EAET,YAAY,CAACI,GAASJ,GAAUK,OAC9BP,EAAsBM,EAAQ,aAAaJ,CAAQ,GAC5C,EAAE,UAAAA,GAAU,OAAAK,EAAA;AAEvB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useComponentContext.js","sources":["../../../src/contexts/ComponentAdapter/useComponentContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { FunctionComponent } from 'react'\nimport type { TextInputProps } from '@/components/Common/UI/TextInput/TextInputTypes'\nimport type { TextAreaProps } from '@/components/Common/UI/TextArea/TextAreaTypes'\nimport type { NumberInputProps } from '@/components/Common/UI/NumberInput/NumberInputTypes'\nimport type { CheckboxGroupProps } from '@/components/Common/UI/CheckboxGroup/CheckboxGroupTypes'\nimport type { ComboBoxProps } from '@/components/Common/UI/ComboBox/ComboBoxTypes'\nimport type { CheckboxProps } from '@/components/Common/UI/Checkbox/CheckboxTypes'\nimport type { DatePickerProps } from '@/components/Common/UI/DatePicker/DatePickerTypes'\nimport type { RadioProps } from '@/components/Common/UI/Radio/RadioTypes'\nimport type { RadioGroupProps } from '@/components/Common/UI/RadioGroup/RadioGroupTypes'\nimport type { SelectProps } from '@/components/Common/UI/Select/SelectTypes'\nimport type { SwitchProps } from '@/components/Common/UI/Switch/SwitchTypes'\nimport type { ButtonIconProps, ButtonProps } from '@/components/Common/UI/Button/ButtonTypes'\nimport type { AlertProps } from '@/components/Common/UI/Alert/AlertTypes'\nimport type { CardProps } from '@/components/Common/UI/Card/CardTypes'\nimport type { BoxProps } from '@/components/Common/UI/Box/BoxTypes'\nimport type { FormBoxProps } from '@/components/Common/UI/FormBox/FormBoxTypes'\nimport type { LinkProps } from '@/components/Common/UI/Link/LinkTypes'\nimport type { BadgeProps } from '@/components/Common/UI/Badge/BadgeTypes'\nimport type { BannerProps } from '@/components/Common/UI/Banner/BannerTypes'\nimport type { MenuProps } from '@/components/Common/UI/Menu/MenuTypes'\nimport type { TableProps } from '@/components/Common/UI/Table/TableTypes'\nimport type { OrderedListProps, UnorderedListProps } from '@/components/Common/UI/List/ListTypes'\nimport type { HeadingProps } from '@/components/Common/UI/Heading/HeadingTypes'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport type { TextProps } from '@/components/Common/UI/Text/TextTypes'\nimport type { CalendarPreviewProps } from '@/components/Common/UI/CalendarPreview/CalendarPreviewTypes'\nimport type { DateRangePickerProps } from '@/components/Common/UI/DateRangePicker/DateRangePickerTypes'\nimport type { ProgressBarProps } from '@/components/Common/UI/ProgressBar/ProgressBarTypes'\nimport type { BreadcrumbsProps } from '@/components/Common/UI/Breadcrumbs/BreadcrumbsTypes'\nimport type { TabsProps } from '@/components/Common/UI/Tabs/TabsTypes'\nimport type { DialogProps } from '@/components/Common/UI/Dialog/DialogTypes'\nimport type { ModalProps } from '@/components/Common/UI/Modal/ModalTypes'\nimport type { LoadingSpinnerProps } from '@/components/Common/UI/LoadingSpinner/LoadingSpinnerTypes'\nimport type { DescriptionListProps } from '@/components/Common/UI/DescriptionList/DescriptionListTypes'\nimport type { FileInputProps } from '@/components/Common/UI/FileInput/FileInputTypes'\nimport type { BoxHeaderProps } from '@/components/Common/UI/BoxHeader/BoxHeaderTypes'\nimport type { FormBoxHeaderProps } from '@/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes'\nimport type { MultiSelectComboBoxProps } from '@/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes'\nimport type { PayrollLoadingProps } from '@/components/Common/PayrollLoading/PayrollLoadingTypes'\n\n/**\n * Full map of UI components used by the SDK. Every property is a React component that the\n * SDK renders internally — override any of them to substitute your own design system.\n *\n * Pass a `Partial<ComponentsContextType>` to {@link GustoProvider} via the `components` prop to\n * replace specific components while keeping SDK defaults for the rest.\n *\n * To take full control of every UI component (and eliminate the React Aria dependency),\n * pass a complete {@link ComponentsContextType} to {@link GustoProviderCustomUIAdapter} instead.\n * All properties are then required except `PaginationControl` and `PayrollLoading`,\n * which fall back to built-in SDK implementations when omitted.\n *\n * @public\n * @group Component adapter\n *\n * @example Partial override with GustoProvider\n * ```tsx\n * import { GustoProvider } from '@gusto/embedded-react-sdk'\n *\n * function App() {\n * return (\n * <GustoProvider\n * config={{ baseUrl: '/api/gusto/' }}\n * components={{\n * Button: MyButton,\n * TextInput: MyTextInput,\n * }}\n * >\n * <EmployeeOnboardingFlow companyId=\"company_123\" />\n * </GustoProvider>\n * )\n * }\n * ```\n *\n * @example Full replacement with GustoProviderCustomUIAdapter\n * ```tsx\n * import { GustoProviderCustomUIAdapter, type ComponentsContextType } from '@gusto/embedded-react-sdk'\n *\n * const myComponents: ComponentsContextType = {\n * Alert: props => <MyAlert {...props} />,\n * Button: props => <MyButton {...props} />,\n * // ... all required components\n * }\n *\n * function App() {\n * return (\n * <GustoProviderCustomUIAdapter\n * config={{ baseUrl: '/api/gusto/' }}\n * components={myComponents}\n * >\n * <EmployeeOnboardingFlow companyId=\"company_123\" />\n * </GustoProviderCustomUIAdapter>\n * )\n * }\n * ```\n */\nexport interface ComponentsContextType {\n /** Status message with an optional dismiss action; used for errors, warnings, success, and info. */\n Alert: FunctionComponent<AlertProps>\n /** Small inline label for status, counts, or tags; optionally dismissible. */\n Badge: FunctionComponent<BadgeProps>\n /** Full-width notification banner for prominent warnings and errors. */\n Banner: FunctionComponent<BannerProps>\n /** HTML `<button>` with primary, secondary, tertiary, and error variants. */\n Button: FunctionComponent<ButtonProps>\n /** Icon-only `<button>`; requires `aria-label` since there is no visible text for assistive technologies. */\n ButtonIcon: FunctionComponent<ButtonIconProps>\n /** Sectioned layout container with distinct header, body, and footer areas. */\n Box: FunctionComponent<BoxProps>\n /** Header section of a Box with a title, optional description, and optional inline action. */\n BoxHeader: FunctionComponent<BoxHeaderProps>\n /** Bordered container for grouping related form fields, with an optional header slot. */\n FormBox: FunctionComponent<FormBoxProps>\n /** Header section of a FormBox with a title, optional description, and optional inline action. */\n FormBoxHeader: FunctionComponent<FormBoxHeaderProps>\n /** Read-only calendar for visualizing a date range with optional highlighted dates. */\n CalendarPreview: FunctionComponent<CalendarPreviewProps>\n /** Content container with an optional overflow menu and a leading action slot. */\n Card: FunctionComponent<CardProps>\n /** Form field wrapping a single `<input type=\"checkbox\" />`. */\n Checkbox: FunctionComponent<CheckboxProps>\n /** Form field grouping `<input type=\"checkbox\" />` elements for multi-option selection. */\n CheckboxGroup: FunctionComponent<CheckboxGroupProps>\n /** Form field wrapping a typeahead `<input />` for single-option selection. */\n ComboBox: FunctionComponent<ComboBoxProps>\n /** Form field wrapping an `<input type=\"date\" />` with a calendar picker popover. */\n DatePicker: FunctionComponent<DatePickerProps>\n /** Form field wrapping paired `<input type=\"date\" />` elements for a date range. */\n DateRangePicker: FunctionComponent<DateRangePickerProps>\n /** HTML `<dl>` of term/description pairs in stacked or horizontal layout. */\n DescriptionList: FunctionComponent<DescriptionListProps>\n /** Modal confirmation dialog with a primary action and a cancel action. */\n Dialog: FunctionComponent<DialogProps>\n /** Form field wrapping an `<input type=\"file\" />`. */\n FileInput: FunctionComponent<FileInputProps>\n /** HTML `<h1>`–`<h6>` with visual style controlled independently from semantic level. */\n Heading: FunctionComponent<HeadingProps>\n /** HTML `<a>` for inline navigation. */\n Link: FunctionComponent<LinkProps>\n /** Spinner shown while data or an action is pending. */\n LoadingSpinner: FunctionComponent<LoadingSpinnerProps>\n /** Popover menu of actions anchored to a trigger element. */\n Menu: FunctionComponent<MenuProps>\n /** Overlay modal with customizable body content and footer. */\n Modal: FunctionComponent<ModalProps>\n /** Form field wrapping a typeahead `<input />` for multi-option selection. */\n MultiSelectComboBox: FunctionComponent<MultiSelectComboBoxProps>\n /** Form field wrapping a numeric `<input />` for currency, decimal, or percent values. */\n NumberInput: FunctionComponent<NumberInputProps>\n /** HTML `<ol>` for a numbered list of items. */\n OrderedList: FunctionComponent<OrderedListProps>\n /** Step-based progress indicator for multi-step flows. */\n ProgressBar: FunctionComponent<ProgressBarProps>\n /** Navigation breadcrumb trail showing the user's position in a multi-step flow. */\n Breadcrumbs: FunctionComponent<BreadcrumbsProps>\n /** Form field wrapping a single `<input type=\"radio\" />`. */\n Radio: FunctionComponent<RadioProps>\n /** Form field grouping `<input type=\"radio\" />` elements for single-option selection. */\n RadioGroup: FunctionComponent<RadioGroupProps>\n /** Form field wrapping a single-select dropdown. */\n Select: FunctionComponent<SelectProps>\n /** Form field wrapping an `<input type=\"checkbox\" />` styled as a toggle. */\n Switch: FunctionComponent<SwitchProps>\n /** Tabbed navigation with associated content panels. */\n Tabs: FunctionComponent<TabsProps>\n /** Tabular data display with headers, rows, optional footer, and empty state. */\n Table: FunctionComponent<TableProps>\n /** Body text element rendered as `<p>`, `<span>`, `<div>`, or `<pre>`. */\n Text: FunctionComponent<TextProps>\n /** Form field wrapping an `<input />`. */\n TextInput: FunctionComponent<TextInputProps>\n /** Form field wrapping a `<textarea>`. */\n TextArea: FunctionComponent<TextAreaProps>\n /** HTML `<ul>` for an unordered list of items. */\n UnorderedList: FunctionComponent<UnorderedListProps>\n\n /** Pagination controls for list views. Defaults to the SDK's built-in pagination UI when omitted. */\n PaginationControl?: FunctionComponent<PaginationControlProps>\n /** Loading indicator for payroll calculation. Defaults to the SDK's built-in loading state when omitted. */\n PayrollLoading?: FunctionComponent<PayrollLoadingProps>\n}\n\n/** @internal */\nexport const ComponentsContext = createContext<ComponentsContextType | null>(null)\n\n/** @internal */\nexport const useComponentContext = () => {\n const context = useContext(ComponentsContext)\n if (!context) {\n throw new Error('useComponentContext must be used within a ComponentsProvider')\n }\n return context\n}\n"],"names":["ComponentsContext","createContext","useComponentContext","context","useContext"],"mappings":";AAyLO,MAAMA,IAAoBC,EAA4C,IAAI,GAGpEC,IAAsB,MAAM;AACvC,QAAMC,IAAUC,EAAWJ,CAAiB;AAC5C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,8DAA8D;AAEhF,SAAOA;AACT;"}
|
|
1
|
+
{"version":3,"file":"useComponentContext.js","sources":["../../../src/contexts/ComponentAdapter/useComponentContext.ts"],"sourcesContent":["import { createContext, useContext } from 'react'\nimport type { FunctionComponent } from 'react'\nimport type { TextInputProps } from '@/components/Common/UI/TextInput/TextInputTypes'\nimport type { TextAreaProps } from '@/components/Common/UI/TextArea/TextAreaTypes'\nimport type { NumberInputProps } from '@/components/Common/UI/NumberInput/NumberInputTypes'\nimport type { CheckboxGroupProps } from '@/components/Common/UI/CheckboxGroup/CheckboxGroupTypes'\nimport type { ComboBoxProps } from '@/components/Common/UI/ComboBox/ComboBoxTypes'\nimport type { CheckboxProps } from '@/components/Common/UI/Checkbox/CheckboxTypes'\nimport type { DatePickerProps } from '@/components/Common/UI/DatePicker/DatePickerTypes'\nimport type { RadioProps } from '@/components/Common/UI/Radio/RadioTypes'\nimport type { RadioGroupProps } from '@/components/Common/UI/RadioGroup/RadioGroupTypes'\nimport type { SelectProps } from '@/components/Common/UI/Select/SelectTypes'\nimport type { SwitchProps } from '@/components/Common/UI/Switch/SwitchTypes'\nimport type { ButtonIconProps, ButtonProps } from '@/components/Common/UI/Button/ButtonTypes'\nimport type { AlertProps } from '@/components/Common/UI/Alert/AlertTypes'\nimport type { CardProps } from '@/components/Common/UI/Card/CardTypes'\nimport type { BoxProps } from '@/components/Common/UI/Box/BoxTypes'\nimport type { FormBoxProps } from '@/components/Common/UI/FormBox/FormBoxTypes'\nimport type { LinkProps } from '@/components/Common/UI/Link/LinkTypes'\nimport type { BadgeProps } from '@/components/Common/UI/Badge/BadgeTypes'\nimport type { BannerProps } from '@/components/Common/UI/Banner/BannerTypes'\nimport type { MenuProps } from '@/components/Common/UI/Menu/MenuTypes'\nimport type { TableProps } from '@/components/Common/UI/Table/TableTypes'\nimport type { OrderedListProps, UnorderedListProps } from '@/components/Common/UI/List/ListTypes'\nimport type { HeadingProps } from '@/components/Common/UI/Heading/HeadingTypes'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport type { TextProps } from '@/components/Common/UI/Text/TextTypes'\nimport type { CalendarPreviewProps } from '@/components/Common/UI/CalendarPreview/CalendarPreviewTypes'\nimport type { DateRangePickerProps } from '@/components/Common/UI/DateRangePicker/DateRangePickerTypes'\nimport type { ProgressBarProps } from '@/components/Common/UI/ProgressBar/ProgressBarTypes'\nimport type { BreadcrumbsProps } from '@/components/Common/UI/Breadcrumbs/BreadcrumbsTypes'\nimport type { TabsProps } from '@/components/Common/UI/Tabs/TabsTypes'\nimport type { DialogProps } from '@/components/Common/UI/Dialog/DialogTypes'\nimport type { ModalProps } from '@/components/Common/UI/Modal/ModalTypes'\nimport type { LoadingSpinnerProps } from '@/components/Common/UI/LoadingSpinner/LoadingSpinnerTypes'\nimport type { DescriptionListProps } from '@/components/Common/UI/DescriptionList/DescriptionListTypes'\nimport type { FileInputProps } from '@/components/Common/UI/FileInput/FileInputTypes'\nimport type { BoxHeaderProps } from '@/components/Common/UI/BoxHeader/BoxHeaderTypes'\nimport type { FormBoxHeaderProps } from '@/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes'\nimport type { MultiSelectComboBoxProps } from '@/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes'\nimport type { PayrollLoadingProps } from '@/components/Common/PayrollLoading/PayrollLoadingTypes'\nimport type { FieldCaptionProps } from '@/components/Common/FieldCaption/FieldCaptionTypes'\n\n/**\n * Full map of UI components used by the SDK. Every property is a React component that the\n * SDK renders internally — override any of them to substitute your own design system.\n *\n * Pass a `Partial<ComponentsContextType>` to {@link GustoProvider} via the `components` prop to\n * replace specific components while keeping SDK defaults for the rest.\n *\n * To take full control of every UI component (and eliminate the React Aria dependency),\n * pass a complete {@link ComponentsContextType} to {@link GustoProviderCustomUIAdapter} instead.\n * All properties are then required except `PaginationControl`, `PayrollLoading`, and `FieldCaption`,\n * which fall back to built-in SDK implementations when omitted.\n *\n * @public\n * @group Component adapter\n *\n * @example Partial override with GustoProvider\n * ```tsx\n * import { GustoProvider } from '@gusto/embedded-react-sdk'\n *\n * function App() {\n * return (\n * <GustoProvider\n * config={{ baseUrl: '/api/gusto/' }}\n * components={{\n * Button: MyButton,\n * TextInput: MyTextInput,\n * }}\n * >\n * <EmployeeOnboardingFlow companyId=\"company_123\" />\n * </GustoProvider>\n * )\n * }\n * ```\n *\n * @example Full replacement with GustoProviderCustomUIAdapter\n * ```tsx\n * import { GustoProviderCustomUIAdapter, type ComponentsContextType } from '@gusto/embedded-react-sdk'\n *\n * const myComponents: ComponentsContextType = {\n * Alert: props => <MyAlert {...props} />,\n * Button: props => <MyButton {...props} />,\n * // ... all required components\n * }\n *\n * function App() {\n * return (\n * <GustoProviderCustomUIAdapter\n * config={{ baseUrl: '/api/gusto/' }}\n * components={myComponents}\n * >\n * <EmployeeOnboardingFlow companyId=\"company_123\" />\n * </GustoProviderCustomUIAdapter>\n * )\n * }\n * ```\n */\nexport interface ComponentsContextType {\n /** Status message with an optional dismiss action; used for errors, warnings, success, and info. */\n Alert: FunctionComponent<AlertProps>\n /** Small inline label for status, counts, or tags; optionally dismissible. */\n Badge: FunctionComponent<BadgeProps>\n /** Full-width notification banner for prominent warnings and errors. */\n Banner: FunctionComponent<BannerProps>\n /** HTML `<button>` with primary, secondary, tertiary, and error variants. */\n Button: FunctionComponent<ButtonProps>\n /** Icon-only `<button>`; requires `aria-label` since there is no visible text for assistive technologies. */\n ButtonIcon: FunctionComponent<ButtonIconProps>\n /** Sectioned layout container with distinct header, body, and footer areas. */\n Box: FunctionComponent<BoxProps>\n /** Header section of a Box with a title, optional description, and optional inline action. */\n BoxHeader: FunctionComponent<BoxHeaderProps>\n /** Bordered container for grouping related form fields, with an optional header slot. */\n FormBox: FunctionComponent<FormBoxProps>\n /** Header section of a FormBox with a title, optional description, and optional inline action. */\n FormBoxHeader: FunctionComponent<FormBoxHeaderProps>\n /** Read-only calendar for visualizing a date range with optional highlighted dates. */\n CalendarPreview: FunctionComponent<CalendarPreviewProps>\n /** Content container with an optional overflow menu and a leading action slot. */\n Card: FunctionComponent<CardProps>\n /** Form field wrapping a single `<input type=\"checkbox\" />`. */\n Checkbox: FunctionComponent<CheckboxProps>\n /** Form field grouping `<input type=\"checkbox\" />` elements for multi-option selection. */\n CheckboxGroup: FunctionComponent<CheckboxGroupProps>\n /** Form field wrapping a typeahead `<input />` for single-option selection. */\n ComboBox: FunctionComponent<ComboBoxProps>\n /** Form field wrapping an `<input type=\"date\" />` with a calendar picker popover. */\n DatePicker: FunctionComponent<DatePickerProps>\n /** Form field wrapping paired `<input type=\"date\" />` elements for a date range. */\n DateRangePicker: FunctionComponent<DateRangePickerProps>\n /** HTML `<dl>` of term/description pairs in stacked or horizontal layout. */\n DescriptionList: FunctionComponent<DescriptionListProps>\n /** Modal confirmation dialog with a primary action and a cancel action. */\n Dialog: FunctionComponent<DialogProps>\n /** Form field wrapping an `<input type=\"file\" />`. */\n FileInput: FunctionComponent<FileInputProps>\n /** HTML `<h1>`–`<h6>` with visual style controlled independently from semantic level. */\n Heading: FunctionComponent<HeadingProps>\n /** HTML `<a>` for inline navigation. */\n Link: FunctionComponent<LinkProps>\n /** Spinner shown while data or an action is pending. */\n LoadingSpinner: FunctionComponent<LoadingSpinnerProps>\n /** Popover menu of actions anchored to a trigger element. */\n Menu: FunctionComponent<MenuProps>\n /** Overlay modal with customizable body content and footer. */\n Modal: FunctionComponent<ModalProps>\n /** Form field wrapping a typeahead `<input />` for multi-option selection. */\n MultiSelectComboBox: FunctionComponent<MultiSelectComboBoxProps>\n /** Form field wrapping a numeric `<input />` for currency, decimal, or percent values. */\n NumberInput: FunctionComponent<NumberInputProps>\n /** HTML `<ol>` for a numbered list of items. */\n OrderedList: FunctionComponent<OrderedListProps>\n /** Step-based progress indicator for multi-step flows. */\n ProgressBar: FunctionComponent<ProgressBarProps>\n /** Navigation breadcrumb trail showing the user's position in a multi-step flow. */\n Breadcrumbs: FunctionComponent<BreadcrumbsProps>\n /** Form field wrapping a single `<input type=\"radio\" />`. */\n Radio: FunctionComponent<RadioProps>\n /** Form field grouping `<input type=\"radio\" />` elements for single-option selection. */\n RadioGroup: FunctionComponent<RadioGroupProps>\n /** Form field wrapping a single-select dropdown. */\n Select: FunctionComponent<SelectProps>\n /** Form field wrapping an `<input type=\"checkbox\" />` styled as a toggle. */\n Switch: FunctionComponent<SwitchProps>\n /** Tabbed navigation with associated content panels. */\n Tabs: FunctionComponent<TabsProps>\n /** Tabular data display with headers, rows, optional footer, and empty state. */\n Table: FunctionComponent<TableProps>\n /** Body text element rendered as `<p>`, `<span>`, `<div>`, or `<pre>`. */\n Text: FunctionComponent<TextProps>\n /** Form field wrapping an `<input />`. */\n TextInput: FunctionComponent<TextInputProps>\n /** Form field wrapping a `<textarea>`. */\n TextArea: FunctionComponent<TextAreaProps>\n /** HTML `<ul>` for an unordered list of items. */\n UnorderedList: FunctionComponent<UnorderedListProps>\n\n /** Label or legend caption for form controls, including the optional/required indicator. Defaults to the SDK's built-in caption UI when omitted. */\n FieldCaption?: FunctionComponent<FieldCaptionProps>\n /** Pagination controls for list views. Defaults to the SDK's built-in pagination UI when omitted. */\n PaginationControl?: FunctionComponent<PaginationControlProps>\n /** Loading indicator for payroll calculation. Defaults to the SDK's built-in loading state when omitted. */\n PayrollLoading?: FunctionComponent<PayrollLoadingProps>\n}\n\n/** @internal */\nexport const ComponentsContext = createContext<ComponentsContextType | null>(null)\n\n/** @internal */\nexport const useComponentContext = () => {\n const context = useContext(ComponentsContext)\n if (!context) {\n throw new Error('useComponentContext must be used within a ComponentsProvider')\n }\n return context\n}\n"],"names":["ComponentsContext","createContext","useComponentContext","context","useContext"],"mappings":";AA4LO,MAAMA,IAAoBC,EAA4C,IAAI,GAGpEC,IAAsB,MAAM;AACvC,QAAMC,IAAUC,EAAWJ,CAAiB;AAC5C,MAAI,CAACG;AACH,UAAM,IAAI,MAAM,8DAA8D;AAEhF,SAAOA;AACT;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GustoProviderCustomUIAdapter.js","sources":["../../../src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx"],"sourcesContent":["import type React from 'react'\nimport type { ErrorInfo, JSX, ReactNode } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { I18nextProvider } from 'react-i18next'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useEffect, useMemo } from 'react'\nimport { ComponentsProvider } from '../ComponentAdapter/ComponentsProvider'\nimport type { ComponentsContextType } from '../ComponentAdapter/useComponentContext'\nimport { ApiProvider } from '../ApiProvider/ApiProvider'\nimport { LoadingIndicatorProvider } from '../LoadingIndicatorProvider/LoadingIndicatorProvider'\nimport { ObservabilityProvider } from '../ObservabilityProvider'\nimport { sanitizeError } from '../ObservabilityProvider/sanitization'\nimport { UnstableFeaturesProvider } from '../UnstableFeaturesProvider/UnstableFeaturesProvider'\nimport type { UnstableFeatures } from '../UnstableFeaturesProvider/useUnstableFeature'\nimport { SDKI18next } from './SDKI18next'\nimport { InternalError } from '@/components/Common'\nimport { LocaleProvider } from '@/contexts/LocaleProvider'\nimport { NonceContext } from '@/contexts/NonceProvider'\nimport { ThemeProvider } from '@/contexts/ThemeProvider'\nimport type { GustoSDKTheme } from '@/contexts/ThemeProvider/theme'\nimport type { GlobalResourceDictionary, SupportedLanguages } from '@/types/Helpers'\nimport type { SDKHooks } from '@/types/hooks'\nimport type { ObservabilityHook } from '@/types/observability'\nimport { normalizeToSDKError } from '@/types/sdkError'\n\n/**\n * API client configuration passed to {@link GustoProvider} (and {@link GustoProviderCustomUIAdapter}).\n *\n * @public\n */\nexport interface APIConfig {\n /** URL of your backend proxy that forwards SDK requests to the Gusto Embedded API. SDK components never call Gusto directly. */\n baseUrl: string\n /** Extra headers applied to every API request. Combined with any headers your proxy adds. */\n headers?: HeadersInit\n /** Request interceptor hooks. Use these to inspect, modify, or react to requests and responses. See {@link SDKHooks}. */\n hooks?: SDKHooks\n /** Observability hook for surfacing errors and metrics from the SDK to your monitoring stack. See {@link ObservabilityHook}. */\n observability?: ObservabilityHook\n}\n\n/**\n * Shared configuration props accepted by {@link GustoProvider} and {@link GustoProviderCustomUIAdapter}.\n *\n * @public\n */\nexport interface GustoBaseProviderProps {\n /** API client configuration, including the proxy `baseUrl`, request hooks, and observability. See {@link APIConfig}. */\n config: APIConfig\n /** Translation overrides keyed by language and i18next namespace. Strings supplied here replace the SDK defaults for the matching keys. */\n dictionary?: GlobalResourceDictionary\n /** Active i18next language. Defaults to `'en'`. */\n lng?: string\n /** BCP 47 locale used for number, date, and currency formatting throughout the SDK. Defaults to `'en-US'`. */\n locale?: string\n /** ISO 4217 currency code used for monetary formatting. Defaults to `'USD'`. */\n currency?: string\n /** Theme overrides applied to SDK components. See {@link GustoSDKTheme}. */\n theme?: Partial<GustoSDKTheme>\n /**\n * CSP nonce to apply to runtime-injected `<style>` elements (theming, PDF download window).\n * Pass the same per-request nonce your app uses in its `style-src 'nonce-…'` directive.\n * Also exposed to custom UI components via `useNonce`.\n */\n nonce?: string\n /** Element to use as the portal container for SDK popovers and dropdowns. Useful when rendering inside a modal or shadow root. */\n portalContainer?: HTMLElement\n /** Optional TanStack Query `QueryClient`. When omitted, the SDK creates its own client configured for Gusto's API. */\n queryClient?: QueryClient\n /** Complete map of UI components the SDK renders. Required because this adapter ships no defaults. */\n components: ComponentsContextType\n /** Loading indicator rendered while SDK queries are pending. Overrides the SDK default spinner. */\n LoaderComponent?: ({ children }: { children?: ReactNode }) => JSX.Element\n /**\n * Opt-in flags for alpha SDK functionality. See {@link UnstableFeatures}.\n * @alpha\n */\n unstableFeatures?: UnstableFeatures\n}\n\n/**\n * Props for {@link GustoProviderCustomUIAdapter}.\n *\n * @public\n */\nexport interface GustoProviderCustomUIAdapterProps extends GustoBaseProviderProps {\n /** The application tree that should have access to the SDK. */\n children?: React.ReactNode\n}\n\n/**\n * Top-level provider that requires a complete component map and ships no UI defaults.\n *\n * @remarks\n * Use this adapter when you want full control over every UI primitive the SDK renders, or when\n * you want to avoid the React Aria dependency for tree-shaking. Unlike {@link GustoProvider}, the\n * `components` prop on {@link GustoProviderProps} is required and must supply every component the\n * SDK renders.\n *\n * @param props - See {@link GustoProviderCustomUIAdapterProps}.\n * @returns The configured provider tree wrapping `children`.\n * @public\n * @group Providers\n */\nexport function GustoProviderCustomUIAdapter(props: GustoProviderCustomUIAdapterProps) {\n const {\n children,\n config,\n dictionary,\n lng = 'en',\n locale = 'en-US',\n currency = 'USD',\n theme,\n nonce,\n portalContainer,\n components,\n LoaderComponent,\n queryClient,\n unstableFeatures,\n } = props\n\n if (dictionary) {\n for (const language in dictionary) {\n const lang = language as SupportedLanguages\n for (const ns in dictionary[lang]) {\n SDKI18next.addResourceBundle(\n lang,\n ns,\n (dictionary[lang] as Record<string, unknown>)[ns],\n true,\n true,\n )\n }\n }\n }\n\n useEffect(() => {\n void (async () => {\n await SDKI18next.changeLanguage(lng)\n })()\n }, [lng])\n\n const handleTopLevelError = useMemo(() => {\n if (!config.observability?.onError) return undefined\n\n return (error: unknown, errorInfo: ErrorInfo) => {\n if (!config.observability?.onError) return\n\n const sdkError = normalizeToSDKError(error)\n\n const observabilityError = {\n ...sdkError,\n timestamp: Date.now(),\n componentStack: errorInfo.componentStack ?? undefined,\n }\n\n const sanitizedError = sanitizeError(observabilityError, config.observability.sanitization)\n\n config.observability.onError(sanitizedError)\n }\n }, [config.observability])\n return (\n <NonceContext.Provider value={nonce}>\n <ComponentsProvider value={components}>\n <LoadingIndicatorProvider value={LoaderComponent}>\n <ObservabilityProvider observability={config.observability}>\n <ErrorBoundary FallbackComponent={InternalError} onError={handleTopLevelError}>\n <ThemeProvider theme={theme} portalContainer={portalContainer}>\n <LocaleProvider locale={locale} currency={currency}>\n <I18nextProvider i18n={SDKI18next} key={lng}>\n <ApiProvider\n url={config.baseUrl}\n headers={config.headers}\n hooks={config.hooks}\n queryClient={queryClient}\n >\n <UnstableFeaturesProvider value={unstableFeatures}>\n {children}\n </UnstableFeaturesProvider>\n </ApiProvider>\n </I18nextProvider>\n </LocaleProvider>\n </ThemeProvider>\n </ErrorBoundary>\n </ObservabilityProvider>\n </LoadingIndicatorProvider>\n </ComponentsProvider>\n </NonceContext.Provider>\n )\n}\n"],"names":["GustoProviderCustomUIAdapter","props","children","config","dictionary","lng","locale","currency","theme","nonce","portalContainer","components","LoaderComponent","queryClient","unstableFeatures","language","lang","ns","SDKI18next","useEffect","handleTopLevelError","useMemo","error","errorInfo","observabilityError","normalizeToSDKError","sanitizedError","sanitizeError","NonceContext","jsx","ComponentsProvider","LoadingIndicatorProvider","ObservabilityProvider","ErrorBoundary","InternalError","ThemeProvider","LocaleProvider","I18nextProvider","ApiProvider","UnstableFeaturesProvider"],"mappings":";;;;;;;;;;;;;;;;;AAwGO,SAASA,GAA6BC,GAA0C;AACrF,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,kBAAAC;AAAA,EAAA,IACEb;AAEJ,MAAIG;AACF,eAAWW,KAAYX,GAAY;AACjC,YAAMY,IAAOD;AACb,iBAAWE,KAAMb,EAAWY,CAAI;AAC9B,QAAAE,EAAW;AAAA,UACTF;AAAA,UACAC;AAAA,UACCb,EAAWY,CAAI,EAA8BC,CAAE;AAAA,UAChD;AAAA,UACA;AAAA,QAAA;AAAA,IAGN;AAGF,EAAAE,EAAU,MAAM;AACd,KAAM,YACJ,MAAMD,EAAW,eAAeb,CAAG;AAAA,EAEvC,GAAG,CAACA,CAAG,CAAC;AAER,QAAMe,IAAsBC,EAAQ,MAAM;AACxC,QAAKlB,EAAO,eAAe;AAE3B,aAAO,CAACmB,GAAgBC,MAAyB;AAC/C,YAAI,CAACpB,EAAO,eAAe,QAAS;AAIpC,cAAMqB,IAAqB;AAAA,UACzB,GAHeC,EAAoBH,CAAK;AAAA,UAIxC,WAAW,KAAK,IAAA;AAAA,UAChB,gBAAgBC,EAAU,kBAAkB;AAAA,QAAA,GAGxCG,IAAiBC,EAAcH,GAAoBrB,EAAO,cAAc,YAAY;AAE1F,QAAAA,EAAO,cAAc,QAAQuB,CAAc;AAAA,MAC7C;AAAA,EACF,GAAG,CAACvB,EAAO,aAAa,CAAC;AACzB,2BACGyB,EAAa,UAAb,EAAsB,OAAOnB,GAC5B,UAAA,gBAAAoB,EAACC,GAAA,EAAmB,OAAOnB,GACzB,4BAACoB,GAAA,EAAyB,OAAOnB,GAC/B,UAAA,gBAAAiB,EAACG,KAAsB,eAAe7B,EAAO,eAC3C,UAAA,gBAAA0B,EAACI,KAAc,mBAAmBC,GAAe,SAASd,GACxD,4BAACe,GAAA,EAAc,OAAA3B,GAAc,iBAAAE,GAC3B,UAAA,gBAAAmB,EAACO,KAAe,QAAA9B,GAAgB,UAAAC,GAC9B,UAAA,gBAAAsB,EAACQ,GAAA,EAAgB,MAAMnB,GACrB,UAAA,gBAAAW;AAAA,IAACS;AAAA,IAAA;AAAA,MACC,KAAKnC,EAAO;AAAA,MACZ,SAASA,EAAO;AAAA,MAChB,OAAOA,EAAO;AAAA,MACd,aAAAU;AAAA,MAEA,UAAA,gBAAAgB,EAACU,GAAA,EAAyB,OAAOzB,GAC9B,UAAAZ,EAAA,CACH;AAAA,IAAA;AAAA,EAAA,KAToCG,CAWxC,EAAA,CACF,EAAA,CACF,GACF,GACF,EAAA,CACF,GACF,GACF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"GustoProviderCustomUIAdapter.js","sources":["../../../src/contexts/GustoProvider/GustoProviderCustomUIAdapter.tsx"],"sourcesContent":["import type React from 'react'\nimport type { ErrorInfo, JSX, ReactNode } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { I18nextProvider } from 'react-i18next'\nimport type { QueryClient } from '@tanstack/react-query'\nimport { useEffect, useMemo } from 'react'\nimport { ComponentsProvider } from '../ComponentAdapter/ComponentsProvider'\nimport type { ComponentsContextType } from '../ComponentAdapter/useComponentContext'\nimport { ApiProvider } from '../ApiProvider/ApiProvider'\nimport { LoadingIndicatorProvider } from '../LoadingIndicatorProvider/LoadingIndicatorProvider'\nimport { ObservabilityProvider } from '../ObservabilityProvider'\nimport { sanitizeError } from '../ObservabilityProvider/sanitization'\nimport { UnstableFeaturesProvider } from '../UnstableFeaturesProvider/UnstableFeaturesProvider'\nimport type { UnstableFeatures } from '../UnstableFeaturesProvider/useUnstableFeature'\nimport { SDKI18next } from './SDKI18next'\nimport { InternalError } from '@/components/Common'\nimport { LocaleProvider } from '@/contexts/LocaleProvider'\nimport { NonceContext } from '@/contexts/NonceProvider'\nimport { ThemeProvider } from '@/contexts/ThemeProvider'\nimport type { GustoSDKTheme } from '@/contexts/ThemeProvider/theme'\nimport type { GlobalResourceDictionary, SupportedLanguages } from '@/types/Helpers'\nimport type { SDKHooks } from '@/types/hooks'\nimport type { ObservabilityHook } from '@/types/observability'\nimport { normalizeToSDKError } from '@/types/sdkError'\n\n/**\n * API client configuration passed to {@link GustoProvider} (and {@link GustoProviderCustomUIAdapter}).\n *\n * @public\n */\nexport interface APIConfig {\n /** URL of your backend proxy that forwards SDK requests to the Gusto Embedded API. SDK components never call Gusto directly. */\n baseUrl: string\n /** Extra headers applied to every API request. Combined with any headers your proxy adds. */\n headers?: HeadersInit\n /** Request interceptor hooks. Use these to inspect, modify, or react to requests and responses. See {@link SDKHooks}. */\n hooks?: SDKHooks\n /** Observability hook for surfacing errors and metrics from the SDK to your monitoring stack. See {@link ObservabilityHook}. */\n observability?: ObservabilityHook\n}\n\n/**\n * Shared configuration props accepted by {@link GustoProvider} and {@link GustoProviderCustomUIAdapter}.\n *\n * @public\n */\nexport interface GustoBaseProviderProps {\n /** API client configuration, including the proxy `baseUrl`, request hooks, and observability. See {@link APIConfig}. */\n config: APIConfig\n /** Translation overrides keyed by language and i18next namespace. Strings supplied here replace the SDK defaults for the matching keys. */\n dictionary?: GlobalResourceDictionary\n /** Active i18next language. Defaults to `'en'`. */\n lng?: string\n /** BCP 47 locale used for number, date, and currency formatting throughout the SDK. Defaults to `'en-US'`. */\n locale?: string\n /** ISO 4217 currency code used for monetary formatting. Defaults to `'USD'`. */\n currency?: string\n /** Theme overrides applied to SDK components. See {@link GustoSDKTheme}. */\n theme?: Partial<GustoSDKTheme>\n /**\n * CSP nonce to apply to runtime-injected `<style>` elements (theming, PDF download window).\n * Pass the same per-request nonce your app uses in its `style-src 'nonce-…'` directive.\n * Also exposed to custom UI components via `useNonce`.\n */\n nonce?: string\n /**\n * Element to use as the portal container for SDK popovers and dropdowns.\n * Defaults to a themed root element the SDK appends to `document.body`.\n *\n * Pass an element here if rendering inside a modal, or **required** if\n * rendering inside a shadow root — `document.body` sits outside every\n * shadow boundary, so without an explicit container overlays would\n * otherwise escape your shadow root's style encapsulation.\n */\n portalContainer?: HTMLElement\n /** Optional TanStack Query `QueryClient`. When omitted, the SDK creates its own client configured for Gusto's API. */\n queryClient?: QueryClient\n /** Complete map of UI components the SDK renders. Required because this adapter ships no defaults. */\n components: ComponentsContextType\n /** Loading indicator rendered while SDK queries are pending. Overrides the SDK default spinner. */\n LoaderComponent?: ({ children }: { children?: ReactNode }) => JSX.Element\n /**\n * Opt-in flags for alpha SDK functionality. See {@link UnstableFeatures}.\n * @alpha\n */\n unstableFeatures?: UnstableFeatures\n}\n\n/**\n * Props for {@link GustoProviderCustomUIAdapter}.\n *\n * @public\n */\nexport interface GustoProviderCustomUIAdapterProps extends GustoBaseProviderProps {\n /** The application tree that should have access to the SDK. */\n children?: React.ReactNode\n}\n\n/**\n * Top-level provider that requires a complete component map and ships no UI defaults.\n *\n * @remarks\n * Use this adapter when you want full control over every UI primitive the SDK renders, or when\n * you want to avoid the React Aria dependency for tree-shaking. Unlike {@link GustoProvider}, the\n * `components` prop on {@link GustoProviderProps} is required and must supply every component the\n * SDK renders.\n *\n * @param props - See {@link GustoProviderCustomUIAdapterProps}.\n * @returns The configured provider tree wrapping `children`.\n * @public\n * @group Providers\n */\nexport function GustoProviderCustomUIAdapter(props: GustoProviderCustomUIAdapterProps) {\n const {\n children,\n config,\n dictionary,\n lng = 'en',\n locale = 'en-US',\n currency = 'USD',\n theme,\n nonce,\n portalContainer,\n components,\n LoaderComponent,\n queryClient,\n unstableFeatures,\n } = props\n\n if (dictionary) {\n for (const language in dictionary) {\n const lang = language as SupportedLanguages\n for (const ns in dictionary[lang]) {\n SDKI18next.addResourceBundle(\n lang,\n ns,\n (dictionary[lang] as Record<string, unknown>)[ns],\n true,\n true,\n )\n }\n }\n }\n\n useEffect(() => {\n void (async () => {\n await SDKI18next.changeLanguage(lng)\n })()\n }, [lng])\n\n const handleTopLevelError = useMemo(() => {\n if (!config.observability?.onError) return undefined\n\n return (error: unknown, errorInfo: ErrorInfo) => {\n if (!config.observability?.onError) return\n\n const sdkError = normalizeToSDKError(error)\n\n const observabilityError = {\n ...sdkError,\n timestamp: Date.now(),\n componentStack: errorInfo.componentStack ?? undefined,\n }\n\n const sanitizedError = sanitizeError(observabilityError, config.observability.sanitization)\n\n config.observability.onError(sanitizedError)\n }\n }, [config.observability])\n return (\n <NonceContext.Provider value={nonce}>\n <ComponentsProvider value={components}>\n <LoadingIndicatorProvider value={LoaderComponent}>\n <ObservabilityProvider observability={config.observability}>\n <ErrorBoundary FallbackComponent={InternalError} onError={handleTopLevelError}>\n <ThemeProvider theme={theme} portalContainer={portalContainer}>\n <LocaleProvider locale={locale} currency={currency}>\n <I18nextProvider i18n={SDKI18next} key={lng}>\n <ApiProvider\n url={config.baseUrl}\n headers={config.headers}\n hooks={config.hooks}\n queryClient={queryClient}\n >\n <UnstableFeaturesProvider value={unstableFeatures}>\n {children}\n </UnstableFeaturesProvider>\n </ApiProvider>\n </I18nextProvider>\n </LocaleProvider>\n </ThemeProvider>\n </ErrorBoundary>\n </ObservabilityProvider>\n </LoadingIndicatorProvider>\n </ComponentsProvider>\n </NonceContext.Provider>\n )\n}\n"],"names":["GustoProviderCustomUIAdapter","props","children","config","dictionary","lng","locale","currency","theme","nonce","portalContainer","components","LoaderComponent","queryClient","unstableFeatures","language","lang","ns","SDKI18next","useEffect","handleTopLevelError","useMemo","error","errorInfo","observabilityError","normalizeToSDKError","sanitizedError","sanitizeError","NonceContext","jsx","ComponentsProvider","LoadingIndicatorProvider","ObservabilityProvider","ErrorBoundary","InternalError","ThemeProvider","LocaleProvider","I18nextProvider","ApiProvider","UnstableFeaturesProvider"],"mappings":";;;;;;;;;;;;;;;;;AAgHO,SAASA,GAA6BC,GAA0C;AACrF,QAAM;AAAA,IACJ,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,KAAAC,IAAM;AAAA,IACN,QAAAC,IAAS;AAAA,IACT,UAAAC,IAAW;AAAA,IACX,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,kBAAAC;AAAA,EAAA,IACEb;AAEJ,MAAIG;AACF,eAAWW,KAAYX,GAAY;AACjC,YAAMY,IAAOD;AACb,iBAAWE,KAAMb,EAAWY,CAAI;AAC9B,QAAAE,EAAW;AAAA,UACTF;AAAA,UACAC;AAAA,UACCb,EAAWY,CAAI,EAA8BC,CAAE;AAAA,UAChD;AAAA,UACA;AAAA,QAAA;AAAA,IAGN;AAGF,EAAAE,EAAU,MAAM;AACd,KAAM,YACJ,MAAMD,EAAW,eAAeb,CAAG;AAAA,EAEvC,GAAG,CAACA,CAAG,CAAC;AAER,QAAMe,IAAsBC,EAAQ,MAAM;AACxC,QAAKlB,EAAO,eAAe;AAE3B,aAAO,CAACmB,GAAgBC,MAAyB;AAC/C,YAAI,CAACpB,EAAO,eAAe,QAAS;AAIpC,cAAMqB,IAAqB;AAAA,UACzB,GAHeC,EAAoBH,CAAK;AAAA,UAIxC,WAAW,KAAK,IAAA;AAAA,UAChB,gBAAgBC,EAAU,kBAAkB;AAAA,QAAA,GAGxCG,IAAiBC,EAAcH,GAAoBrB,EAAO,cAAc,YAAY;AAE1F,QAAAA,EAAO,cAAc,QAAQuB,CAAc;AAAA,MAC7C;AAAA,EACF,GAAG,CAACvB,EAAO,aAAa,CAAC;AACzB,2BACGyB,EAAa,UAAb,EAAsB,OAAOnB,GAC5B,UAAA,gBAAAoB,EAACC,GAAA,EAAmB,OAAOnB,GACzB,4BAACoB,GAAA,EAAyB,OAAOnB,GAC/B,UAAA,gBAAAiB,EAACG,KAAsB,eAAe7B,EAAO,eAC3C,UAAA,gBAAA0B,EAACI,KAAc,mBAAmBC,GAAe,SAASd,GACxD,4BAACe,GAAA,EAAc,OAAA3B,GAAc,iBAAAE,GAC3B,UAAA,gBAAAmB,EAACO,KAAe,QAAA9B,GAAgB,UAAAC,GAC9B,UAAA,gBAAAsB,EAACQ,GAAA,EAAgB,MAAMnB,GACrB,UAAA,gBAAAW;AAAA,IAACS;AAAA,IAAA;AAAA,MACC,KAAKnC,EAAO;AAAA,MACZ,SAASA,EAAO;AAAA,MAChB,OAAOA,EAAO;AAAA,MACd,aAAAU;AAAA,MAEA,UAAA,gBAAAgB,EAACU,GAAA,EAAyB,OAAOzB,GAC9B,UAAAZ,EAAA,CACH;AAAA,IAAA;AAAA,EAAA,KAToCG,CAWxC,EAAA,CACF,EAAA,CACF,GACF,GACF,EAAA,CACF,GACF,GACF;AAEJ;"}
|