@gusto/embedded-react-sdk 0.13.4 → 0.14.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 +20 -0
- package/dist/assets/icons/spinner_large.svg.js +10 -0
- package/dist/assets/icons/spinner_large.svg.js.map +1 -0
- package/dist/components/Common/Flex/Flex.js +16 -12
- package/dist/components/Common/Flex/Flex.js.map +1 -1
- package/dist/components/Common/Loading/Loading.d.ts +5 -1
- package/dist/components/Common/Loading/Loading.js +9 -9
- package/dist/components/Common/Loading/Loading.js.map +1 -1
- package/dist/components/Common/Loading/Loading.module.scss.js +1 -1
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinner.d.ts +3 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinner.js +25 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinner.js.map +1 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinner.module.scss.js +10 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinner.module.scss.js.map +1 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinnerTypes.d.ts +18 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinnerTypes.js +8 -0
- package/dist/components/Common/UI/LoadingSpinner/LoadingSpinnerTypes.js.map +1 -0
- package/dist/components/Common/UI/LoadingSpinner/index.d.ts +4 -0
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -3
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -3
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -5
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -3
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -3
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentSigner.js +0 -1
- package/dist/components/Company/DocumentSigner/DocumentSigner.js.map +1 -1
- package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
- package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +9 -8
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +7 -6
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -3
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -3
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/context.js +4 -3
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/usePaySchedule.js +6 -5
- package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +4 -3
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -3
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Contractor/Address/useAddress.js +6 -5
- package/dist/components/Contractor/Address/useAddress.js.map +1 -1
- package/dist/components/Contractor/Profile/useContractorProfile.js +3 -2
- package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js +3 -2
- package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js +25 -24
- package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +4 -3
- package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +4 -3
- package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
- package/dist/components/Employee/EmployeeList/useEmployeeList.js +4 -3
- package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +4 -3
- package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +6 -5
- package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
- package/dist/components/Employee/Profile/useProfile.js +4 -3
- package/dist/components/Employee/Profile/useProfile.js.map +1 -1
- package/dist/components/Employee/StateTaxes/useStateTaxes.js +4 -3
- package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
- package/dist/components/Employee/Taxes/useTaxes.js +4 -3
- package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
- package/dist/components/Payroll/PayrollBlocker/PayrollBlockerAlerts.d.ts +10 -3
- package/dist/components/Payroll/PayrollBlocker/PayrollBlockerAlerts.js +54 -0
- package/dist/components/Payroll/PayrollBlocker/PayrollBlockerAlerts.js.map +1 -0
- package/dist/components/Payroll/PayrollBlocker/PayrollBlockerList.d.ts +14 -1
- package/dist/components/Payroll/PayrollBlocker/index.d.ts +1 -2
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.d.ts +27 -0
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js +39 -0
- package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js.map +1 -0
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +76 -66
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +4 -2
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +157 -122
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.module.scss.js +8 -0
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.module.scss.js.map +1 -0
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +39 -36
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.d.ts +2 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.js +28 -36
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.d.ts +15 -0
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +62 -0
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -0
- package/dist/components/Payroll/PayrollLanding/payrollLandingStateMachine.d.ts +5 -0
- package/dist/components/Payroll/PayrollLanding/payrollLandingStateMachine.js +93 -0
- package/dist/components/Payroll/PayrollLanding/payrollLandingStateMachine.js.map +1 -0
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.d.ts +2 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +49 -45
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +2 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +309 -263
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.d.ts +2 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +26 -12
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +2 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +44 -40
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/index.d.ts +1 -1
- package/dist/components/Payroll/index.js +6 -8
- package/dist/components/Payroll/index.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +40 -24
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js +28 -26
- package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js.map +1 -1
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.d.ts +5 -0
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js +28 -23
- package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js.map +1 -1
- package/dist/contexts/ComponentAdapter/useComponentContext.d.ts +2 -0
- package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
- package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.d.ts +3 -1
- package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js +8 -8
- package/dist/contexts/LoadingIndicatorProvider/useLoadingIndicator.js.map +1 -1
- package/dist/hooks/useContainerBreakpoints/useContainerBreakpoints.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +19 -19
- package/dist/i18n/en/Payroll.PayrollOverview.json.js +50 -44
- package/dist/i18n/en/Payroll.PayrollOverview.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollReceipts.json.js +14 -12
- package/dist/i18n/en/Payroll.PayrollReceipts.json.js.map +1 -1
- package/dist/i18n/en/PayrollBlocker.json.js +17 -11
- package/dist/i18n/en/PayrollBlocker.json.js.map +1 -1
- package/dist/shared/constants.d.ts +1 -1
- package/dist/shared/constants.js +1 -1
- package/dist/shared/constants.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/i18next.d.ts +145 -3
- package/package.json +16 -16
- package/dist/components/Payroll/PayrollBlocker/PayrollBlockerTypes.d.ts +0 -101
- package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js +0 -126
- package/dist/components/Payroll/RunPayrollFlow/RunPayroll.js.map +0 -1
- package/dist/components/Payroll/RunPayrollFlow/RunPayrollFlow.js +0 -22
- package/dist/components/Payroll/RunPayrollFlow/RunPayrollFlow.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEmployeeList.js","sources":["../../../../src/components/Employee/EmployeeList/useEmployeeList.ts"],"sourcesContent":["import type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { OnboardingStatus } from '@gusto/embedded-api/models/operations/putv1employeesemployeeidonboardingstatus'\nimport { createCompoundContext } from '@/components/Base'\n\n//Interface for context passed down to component slots\ntype EmployeeListContextType = {\n handleEdit: (uuid: string, onboardingStatus?: OnboardingStatus) => void\n handleDelete: (uuid: string) => Promise<void>\n handleCancelSelfOnboarding: (employeeId: string) => Promise<void>\n handleReview: (employeeId: string) => Promise<void>\n handleNew: () => void\n handleSkip: () => void\n handleFirstPage: () => void\n handlePreviousPage: () => void\n handleNextPage: () => void\n handleLastPage: () => void\n handleItemsPerPageChange: (newCount: number) => void\n currentPage: number\n totalPages: number\n employees: Employee[]\n isFetching: boolean\n}\n\nconst [useEmployeeList, EmployeeListProvider] =\n createCompoundContext<EmployeeListContextType>('EmployeeListContext')\nexport { useEmployeeList, EmployeeListProvider }\n"],"names":["useEmployeeList","EmployeeListProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useEmployeeList.js","sources":["../../../../src/components/Employee/EmployeeList/useEmployeeList.ts"],"sourcesContent":["import type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { OnboardingStatus } from '@gusto/embedded-api/models/operations/putv1employeesemployeeidonboardingstatus'\nimport { createCompoundContext } from '@/components/Base'\n\n//Interface for context passed down to component slots\ntype EmployeeListContextType = {\n handleEdit: (uuid: string, onboardingStatus?: OnboardingStatus) => void\n handleDelete: (uuid: string) => Promise<void>\n handleCancelSelfOnboarding: (employeeId: string) => Promise<void>\n handleReview: (employeeId: string) => Promise<void>\n handleNew: () => void\n handleSkip: () => void\n handleFirstPage: () => void\n handlePreviousPage: () => void\n handleNextPage: () => void\n handleLastPage: () => void\n handleItemsPerPageChange: (newCount: number) => void\n currentPage: number\n totalPages: number\n employees: Employee[]\n isFetching: boolean\n}\n\nconst [useEmployeeList, EmployeeListProvider] =\n createCompoundContext<EmployeeListContextType>('EmployeeListContext')\nexport { useEmployeeList, EmployeeListProvider }\n"],"names":["useEmployeeList","EmployeeListProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;;AAuBA,MAAM,CAACA,GAAiBC,CAAoB,IAC1CC,EAA+C,qBAAqB;"}
|
|
@@ -12,10 +12,11 @@ import "classnames";
|
|
|
12
12
|
import "dompurify";
|
|
13
13
|
import "../../../contexts/LocaleProvider/useLocale.js";
|
|
14
14
|
import "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
15
|
+
import "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
15
16
|
import { createCompoundContext as o } from "../../Base/createCompoundContext.js";
|
|
16
|
-
const [
|
|
17
|
+
const [u, f] = o("FederalTaxesContext");
|
|
17
18
|
export {
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
f as FederalTaxesProvider,
|
|
20
|
+
u as useFederalTaxes
|
|
20
21
|
};
|
|
21
22
|
//# sourceMappingURL=useFederalTaxes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFederalTaxes.js","sources":["../../../../src/components/Employee/FederalTaxes/useFederalTaxes.ts"],"sourcesContent":["import { createCompoundContext } from '@/components/Base'\n\ntype FederalTaxesContextType = {\n isPending: boolean\n}\n\nconst [useFederalTaxes, FederalTaxesProvider] =\n createCompoundContext<FederalTaxesContextType>('FederalTaxesContext')\nexport { useFederalTaxes, FederalTaxesProvider }\n"],"names":["useFederalTaxes","FederalTaxesProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFederalTaxes.js","sources":["../../../../src/components/Employee/FederalTaxes/useFederalTaxes.ts"],"sourcesContent":["import { createCompoundContext } from '@/components/Base'\n\ntype FederalTaxesContextType = {\n isPending: boolean\n}\n\nconst [useFederalTaxes, FederalTaxesProvider] =\n createCompoundContext<FederalTaxesContextType>('FederalTaxesContext')\nexport { useFederalTaxes, FederalTaxesProvider }\n"],"names":["useFederalTaxes","FederalTaxesProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;;AAMA,MAAM,CAACA,GAAiBC,CAAoB,IAC1CC,EAA+C,qBAAqB;"}
|
|
@@ -14,8 +14,9 @@ import "classnames";
|
|
|
14
14
|
import "dompurify";
|
|
15
15
|
import "../../../contexts/LocaleProvider/useLocale.js";
|
|
16
16
|
import "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
17
|
+
import "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
17
18
|
import { createCompoundContext as a } from "../../Base/createCompoundContext.js";
|
|
18
|
-
const
|
|
19
|
+
const k = t.union([
|
|
19
20
|
l.extend({
|
|
20
21
|
type: t.literal("Direct Deposit"),
|
|
21
22
|
isSplit: t.literal(!1)
|
|
@@ -55,10 +56,10 @@ const S = t.union([
|
|
|
55
56
|
remainder: t.string()
|
|
56
57
|
})
|
|
57
58
|
])
|
|
58
|
-
]), [
|
|
59
|
+
]), [C, v] = a("PaymentMethodContext");
|
|
59
60
|
export {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
k as CombinedSchema,
|
|
62
|
+
v as PaymentMethodProvider,
|
|
63
|
+
C as usePaymentMethod
|
|
63
64
|
};
|
|
64
65
|
//# sourceMappingURL=usePaymentMethod.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePaymentMethod.js","sources":["../../../../src/components/Employee/PaymentMethod/usePaymentMethod.ts"],"sourcesContent":["import type { EmployeeBankAccount } from '@gusto/embedded-api/models/components/employeebankaccount'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api/models/components/employeepaymentmethod'\nimport { z } from 'zod'\nimport { BankAccountSchema } from './BankAccount'\nimport { createCompoundContext } from '@/components/Base'\n\nexport const CombinedSchema = z.union([\n BankAccountSchema.extend({\n type: z.literal('Direct Deposit'),\n isSplit: z.literal(false),\n }),\n z.object({\n type: z.literal('Direct Deposit'),\n isSplit: z.literal(false),\n hasBankPayload: z.literal(false),\n }),\n z.object({\n type: z.literal('Check'),\n }),\n z.discriminatedUnion('splitBy', [\n z.object({\n type: z.literal('Direct Deposit'),\n isSplit: z.literal(true),\n hasBankPayload: z.literal(false),\n splitBy: z.literal('Percentage'),\n splitAmount: z.record(z.string(), z.number().max(100).min(0)).refine(\n input => Object.values(input).reduce((acc, curr) => acc + curr, 0) === 100,\n input => {\n const total = Object.values(input).reduce((acc, curr) => acc + curr, 0)\n return {\n message: `percentage_split_total_error:${total}`,\n }\n },\n ),\n priority: z.record(z.string(), z.number()),\n }),\n z.object({\n type: z.literal('Direct Deposit'),\n isSplit: z.literal(true),\n hasBankPayload: z.literal(false),\n splitBy: z.literal('Amount'),\n priority: z.record(z.string(), z.number()).refine(input => {\n const arr = Object.values(input)\n return arr.filter((item, index) => arr.indexOf(item) !== index).length === 0\n }),\n splitAmount: z.record(z.string(), z.number().min(0).nullable()),\n remainder: z.string(),\n }),\n ]),\n])\n\nexport type CombinedSchemaInputs = z.input<typeof CombinedSchema>\nexport type CombinedSchemaOutputs = z.output<typeof CombinedSchema>\n\ntype PaymentMethodContextType = {\n bankAccounts: EmployeeBankAccount[]\n isPending: boolean\n watchedType?: string\n mode: MODE\n paymentMethod: EmployeePaymentMethod\n handleAdd: () => void\n handleSplit: () => void\n handleCancel: () => void\n handleDelete: (uuid: string) => void\n}\n\nexport type MODE = 'ADD' | 'LIST' | 'SPLIT' | 'INITIAL'\n\nconst [usePaymentMethod, PaymentMethodProvider] =\n createCompoundContext<PaymentMethodContextType>('PaymentMethodContext')\nexport { usePaymentMethod, PaymentMethodProvider }\n"],"names":["CombinedSchema","z","BankAccountSchema","input","acc","curr","arr","item","index","usePaymentMethod","PaymentMethodProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePaymentMethod.js","sources":["../../../../src/components/Employee/PaymentMethod/usePaymentMethod.ts"],"sourcesContent":["import type { EmployeeBankAccount } from '@gusto/embedded-api/models/components/employeebankaccount'\nimport type { EmployeePaymentMethod } from '@gusto/embedded-api/models/components/employeepaymentmethod'\nimport { z } from 'zod'\nimport { BankAccountSchema } from './BankAccount'\nimport { createCompoundContext } from '@/components/Base'\n\nexport const CombinedSchema = z.union([\n BankAccountSchema.extend({\n type: z.literal('Direct Deposit'),\n isSplit: z.literal(false),\n }),\n z.object({\n type: z.literal('Direct Deposit'),\n isSplit: z.literal(false),\n hasBankPayload: z.literal(false),\n }),\n z.object({\n type: z.literal('Check'),\n }),\n z.discriminatedUnion('splitBy', [\n z.object({\n type: z.literal('Direct Deposit'),\n isSplit: z.literal(true),\n hasBankPayload: z.literal(false),\n splitBy: z.literal('Percentage'),\n splitAmount: z.record(z.string(), z.number().max(100).min(0)).refine(\n input => Object.values(input).reduce((acc, curr) => acc + curr, 0) === 100,\n input => {\n const total = Object.values(input).reduce((acc, curr) => acc + curr, 0)\n return {\n message: `percentage_split_total_error:${total}`,\n }\n },\n ),\n priority: z.record(z.string(), z.number()),\n }),\n z.object({\n type: z.literal('Direct Deposit'),\n isSplit: z.literal(true),\n hasBankPayload: z.literal(false),\n splitBy: z.literal('Amount'),\n priority: z.record(z.string(), z.number()).refine(input => {\n const arr = Object.values(input)\n return arr.filter((item, index) => arr.indexOf(item) !== index).length === 0\n }),\n splitAmount: z.record(z.string(), z.number().min(0).nullable()),\n remainder: z.string(),\n }),\n ]),\n])\n\nexport type CombinedSchemaInputs = z.input<typeof CombinedSchema>\nexport type CombinedSchemaOutputs = z.output<typeof CombinedSchema>\n\ntype PaymentMethodContextType = {\n bankAccounts: EmployeeBankAccount[]\n isPending: boolean\n watchedType?: string\n mode: MODE\n paymentMethod: EmployeePaymentMethod\n handleAdd: () => void\n handleSplit: () => void\n handleCancel: () => void\n handleDelete: (uuid: string) => void\n}\n\nexport type MODE = 'ADD' | 'LIST' | 'SPLIT' | 'INITIAL'\n\nconst [usePaymentMethod, PaymentMethodProvider] =\n createCompoundContext<PaymentMethodContextType>('PaymentMethodContext')\nexport { usePaymentMethod, PaymentMethodProvider }\n"],"names":["CombinedSchema","z","BankAccountSchema","input","acc","curr","arr","item","index","usePaymentMethod","PaymentMethodProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;;;;AAMO,MAAMA,IAAiBC,EAAE,MAAM;AAAA,EACpCC,EAAkB,OAAO;AAAA,IACvB,MAAMD,EAAE,QAAQ,gBAAgB;AAAA,IAChC,SAASA,EAAE,QAAQ,EAAK;AAAA,EAAA,CACzB;AAAA,EACDA,EAAE,OAAO;AAAA,IACP,MAAMA,EAAE,QAAQ,gBAAgB;AAAA,IAChC,SAASA,EAAE,QAAQ,EAAK;AAAA,IACxB,gBAAgBA,EAAE,QAAQ,EAAK;AAAA,EAAA,CAChC;AAAA,EACDA,EAAE,OAAO;AAAA,IACP,MAAMA,EAAE,QAAQ,OAAO;AAAA,EAAA,CACxB;AAAA,EACDA,EAAE,mBAAmB,WAAW;AAAA,IAC9BA,EAAE,OAAO;AAAA,MACP,MAAMA,EAAE,QAAQ,gBAAgB;AAAA,MAChC,SAASA,EAAE,QAAQ,EAAI;AAAA,MACvB,gBAAgBA,EAAE,QAAQ,EAAK;AAAA,MAC/B,SAASA,EAAE,QAAQ,YAAY;AAAA,MAC/B,aAAaA,EAAE,OAAOA,EAAE,UAAUA,EAAE,OAAA,EAAS,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE;AAAA,QAC5D,CAAAE,MAAS,OAAO,OAAOA,CAAK,EAAE,OAAO,CAACC,GAAKC,MAASD,IAAMC,GAAM,CAAC,MAAM;AAAA,QACvE,CAAAF,OAES;AAAA,UACL,SAAS,gCAFG,OAAO,OAAOA,CAAK,EAAE,OAAO,CAACC,GAAKC,MAASD,IAAMC,GAAM,CAAC,CAEtB;AAAA,QAAA;AAAA,MAElD;AAAA,MAEF,UAAUJ,EAAE,OAAOA,EAAE,UAAUA,EAAE,QAAQ;AAAA,IAAA,CAC1C;AAAA,IACDA,EAAE,OAAO;AAAA,MACP,MAAMA,EAAE,QAAQ,gBAAgB;AAAA,MAChC,SAASA,EAAE,QAAQ,EAAI;AAAA,MACvB,gBAAgBA,EAAE,QAAQ,EAAK;AAAA,MAC/B,SAASA,EAAE,QAAQ,QAAQ;AAAA,MAC3B,UAAUA,EAAE,OAAOA,EAAE,OAAA,GAAUA,EAAE,OAAA,CAAQ,EAAE,OAAO,CAAAE,MAAS;AACzD,cAAMG,IAAM,OAAO,OAAOH,CAAK;AAC/B,eAAOG,EAAI,OAAO,CAACC,GAAMC,MAAUF,EAAI,QAAQC,CAAI,MAAMC,CAAK,EAAE,WAAW;AAAA,MAC7E,CAAC;AAAA,MACD,aAAaP,EAAE,OAAOA,EAAE,OAAA,GAAUA,EAAE,OAAA,EAAS,IAAI,CAAC,EAAE,UAAU;AAAA,MAC9D,WAAWA,EAAE,OAAA;AAAA,IAAO,CACrB;AAAA,EAAA,CACF;AACH,CAAC,GAmBK,CAACQ,GAAkBC,CAAqB,IAC5CC,EAAgD,sBAAsB;"}
|
|
@@ -12,10 +12,11 @@ import "classnames";
|
|
|
12
12
|
import "dompurify";
|
|
13
13
|
import "../../../contexts/LocaleProvider/useLocale.js";
|
|
14
14
|
import "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
15
|
+
import "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
15
16
|
import { createCompoundContext as o } from "../../Base/createCompoundContext.js";
|
|
16
|
-
const [
|
|
17
|
+
const [a, v] = o("ProfileContext");
|
|
17
18
|
export {
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
v as ProfileProvider,
|
|
20
|
+
a as useProfile
|
|
20
21
|
};
|
|
21
22
|
//# sourceMappingURL=useProfile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProfile.js","sources":["../../../../src/components/Employee/Profile/useProfile.ts"],"sourcesContent":["import type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { EmployeeWorkAddress } from '@gusto/embedded-api/models/components/employeeworkaddress'\nimport { type Location } from '@gusto/embedded-api/models/components/location'\nimport { createCompoundContext } from '@/components/Base'\n\n//Interface for context passed down to component slots\ntype ProfileContextType = {\n companyLocations: Location[]\n workAddresses?: EmployeeWorkAddress[]\n employee?: Employee\n isSelfOnboardingIntended?: boolean\n isPending: boolean\n isAdmin: boolean\n handleCancel: () => void\n isSelfOnboardingEnabled: boolean\n}\n\nconst [useProfile, ProfileProvider] = createCompoundContext<ProfileContextType>('ProfileContext')\nexport { useProfile, ProfileProvider }\n"],"names":["useProfile","ProfileProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useProfile.js","sources":["../../../../src/components/Employee/Profile/useProfile.ts"],"sourcesContent":["import type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { EmployeeWorkAddress } from '@gusto/embedded-api/models/components/employeeworkaddress'\nimport { type Location } from '@gusto/embedded-api/models/components/location'\nimport { createCompoundContext } from '@/components/Base'\n\n//Interface for context passed down to component slots\ntype ProfileContextType = {\n companyLocations: Location[]\n workAddresses?: EmployeeWorkAddress[]\n employee?: Employee\n isSelfOnboardingIntended?: boolean\n isPending: boolean\n isAdmin: boolean\n handleCancel: () => void\n isSelfOnboardingEnabled: boolean\n}\n\nconst [useProfile, ProfileProvider] = createCompoundContext<ProfileContextType>('ProfileContext')\nexport { useProfile, ProfileProvider }\n"],"names":["useProfile","ProfileProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;;AAiBA,MAAM,CAACA,GAAYC,CAAe,IAAIC,EAA0C,gBAAgB;"}
|
|
@@ -12,10 +12,11 @@ import "classnames";
|
|
|
12
12
|
import "dompurify";
|
|
13
13
|
import "../../../contexts/LocaleProvider/useLocale.js";
|
|
14
14
|
import "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
15
|
+
import "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
15
16
|
import { createCompoundContext as t } from "../../Base/createCompoundContext.js";
|
|
16
|
-
const [
|
|
17
|
+
const [f, v] = t("StateTaxesContext");
|
|
17
18
|
export {
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
v as StateTaxesProvider,
|
|
20
|
+
f as useStateTaxes
|
|
20
21
|
};
|
|
21
22
|
//# sourceMappingURL=useStateTaxes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStateTaxes.js","sources":["../../../../src/components/Employee/StateTaxes/useStateTaxes.ts"],"sourcesContent":["import type { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist'\nimport { createCompoundContext } from '@/components/Base'\n\ntype StateTaxesContextType = {\n employeeStateTaxes: EmployeeStateTaxesList[]\n isPending: boolean\n isAdmin: boolean\n}\n\nconst [useStateTaxes, StateTaxesProvider] =\n createCompoundContext<StateTaxesContextType>('StateTaxesContext')\nexport { useStateTaxes, StateTaxesProvider }\n"],"names":["useStateTaxes","StateTaxesProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useStateTaxes.js","sources":["../../../../src/components/Employee/StateTaxes/useStateTaxes.ts"],"sourcesContent":["import type { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist'\nimport { createCompoundContext } from '@/components/Base'\n\ntype StateTaxesContextType = {\n employeeStateTaxes: EmployeeStateTaxesList[]\n isPending: boolean\n isAdmin: boolean\n}\n\nconst [useStateTaxes, StateTaxesProvider] =\n createCompoundContext<StateTaxesContextType>('StateTaxesContext')\nexport { useStateTaxes, StateTaxesProvider }\n"],"names":["useStateTaxes","StateTaxesProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;;AASA,MAAM,CAACA,GAAeC,CAAkB,IACtCC,EAA6C,mBAAmB;"}
|
|
@@ -12,10 +12,11 @@ import "classnames";
|
|
|
12
12
|
import "dompurify";
|
|
13
13
|
import "../../../contexts/LocaleProvider/useLocale.js";
|
|
14
14
|
import "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
15
|
+
import "../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
|
|
15
16
|
import { createCompoundContext as o } from "../../Base/createCompoundContext.js";
|
|
16
|
-
const [
|
|
17
|
+
const [v, P] = o("TaxesContext");
|
|
17
18
|
export {
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
P as TaxesProvider,
|
|
20
|
+
v as useTaxes
|
|
20
21
|
};
|
|
21
22
|
//# sourceMappingURL=useTaxes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTaxes.js","sources":["../../../../src/components/Employee/Taxes/useTaxes.ts"],"sourcesContent":["import type { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist'\nimport { createCompoundContext } from '@/components/Base'\n\ntype TaxesContextType = {\n employeeStateTaxes: EmployeeStateTaxesList[]\n isPending: boolean\n isAdmin: boolean\n}\n\nconst [useTaxes, TaxesProvider] = createCompoundContext<TaxesContextType>('TaxesContext')\nexport { useTaxes, TaxesProvider }\n"],"names":["useTaxes","TaxesProvider","createCompoundContext"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTaxes.js","sources":["../../../../src/components/Employee/Taxes/useTaxes.ts"],"sourcesContent":["import type { EmployeeStateTaxesList } from '@gusto/embedded-api/models/components/employeestatetaxeslist'\nimport { createCompoundContext } from '@/components/Base'\n\ntype TaxesContextType = {\n employeeStateTaxes: EmployeeStateTaxesList[]\n isPending: boolean\n isAdmin: boolean\n}\n\nconst [useTaxes, TaxesProvider] = createCompoundContext<TaxesContextType>('TaxesContext')\nexport { useTaxes, TaxesProvider }\n"],"names":["useTaxes","TaxesProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;;AASA,MAAM,CAACA,GAAUC,CAAa,IAAIC,EAAwC,cAAc;"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ApiPayrollBlocker } from './payrollHelpers';
|
|
2
|
+
interface PayrollBlockerAlertsProps {
|
|
3
|
+
blockers: ApiPayrollBlocker[];
|
|
4
|
+
className?: string;
|
|
5
|
+
onMultipleViewClick?: () => void;
|
|
6
|
+
multipleViewLabel?: string;
|
|
7
|
+
}
|
|
2
8
|
/**
|
|
3
9
|
* PayrollBlockerAlerts - Alert-style component for inline blocker display
|
|
4
10
|
* Shows single blocker as alert, or multiple blockers as summary with "Review" button
|
|
5
|
-
*
|
|
11
|
+
* Returns null for empty blocker arrays
|
|
6
12
|
*/
|
|
7
|
-
export declare function PayrollBlockerAlerts({ blockers, onMultipleViewClick, multipleViewLabel, className, }:
|
|
13
|
+
export declare function PayrollBlockerAlerts({ blockers, onMultipleViewClick, multipleViewLabel, className, }: PayrollBlockerAlertsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as l, jsxs as d } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation as v } from "react-i18next";
|
|
3
|
+
import { getBlockerTranslationKeys as A } from "./payrollHelpers.js";
|
|
4
|
+
import { useComponentContext as C } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
5
|
+
import { Flex as m } from "../../Common/Flex/Flex.js";
|
|
6
|
+
import "classnames";
|
|
7
|
+
import "../../../shared/constants.js";
|
|
8
|
+
import { useI18n as D } from "../../../i18n/I18n.js";
|
|
9
|
+
function F({
|
|
10
|
+
blockers: n,
|
|
11
|
+
onMultipleViewClick: i,
|
|
12
|
+
multipleViewLabel: h,
|
|
13
|
+
className: s
|
|
14
|
+
}) {
|
|
15
|
+
D("PayrollBlocker");
|
|
16
|
+
const { t: e } = v("PayrollBlocker"), { Alert: c, Button: f, Text: a, UnorderedList: x } = C();
|
|
17
|
+
if (n.length === 0)
|
|
18
|
+
return null;
|
|
19
|
+
const g = n.length > 1, p = n.map((r) => {
|
|
20
|
+
const o = A(r.key), B = e(o.titleKey, {
|
|
21
|
+
defaultValue: r.key.replace(/_/g, " ").replace(/\b\w/g, (K) => K.toUpperCase())
|
|
22
|
+
}), T = e(o.descriptionKey, {
|
|
23
|
+
defaultValue: r.message || e("defaultBlockerDescription")
|
|
24
|
+
}), k = e(o.helpTextKey, { defaultValue: e("defaultBlockerHelpText") });
|
|
25
|
+
return {
|
|
26
|
+
...r,
|
|
27
|
+
title: B,
|
|
28
|
+
description: T,
|
|
29
|
+
helpText: k
|
|
30
|
+
};
|
|
31
|
+
}), t = p[0];
|
|
32
|
+
if (!g && t)
|
|
33
|
+
return /* @__PURE__ */ l(c, { status: "error", label: t.title, className: s, children: /* @__PURE__ */ d(m, { flexDirection: "column", gap: 8, children: [
|
|
34
|
+
/* @__PURE__ */ l(a, { children: t.description }),
|
|
35
|
+
t.helpText && t.helpText !== t.description && /* @__PURE__ */ l(a, { variant: "supporting", size: "sm", children: t.helpText })
|
|
36
|
+
] }) });
|
|
37
|
+
const y = p.map((r) => r.title), u = h || e("viewAllBlockers");
|
|
38
|
+
return /* @__PURE__ */ l(
|
|
39
|
+
c,
|
|
40
|
+
{
|
|
41
|
+
status: "error",
|
|
42
|
+
label: e("multipleIssuesTitle", { count: n.length }),
|
|
43
|
+
className: s,
|
|
44
|
+
children: /* @__PURE__ */ d(m, { flexDirection: "column", gap: 16, children: [
|
|
45
|
+
/* @__PURE__ */ l(x, { items: y }),
|
|
46
|
+
i && /* @__PURE__ */ l("div", { children: /* @__PURE__ */ l(f, { variant: "secondary", onClick: i, title: u, children: u }) })
|
|
47
|
+
] })
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
F as PayrollBlockerAlerts
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=PayrollBlockerAlerts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayrollBlockerAlerts.js","sources":["../../../../src/components/Payroll/PayrollBlocker/PayrollBlockerAlerts.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { type ApiPayrollBlocker, getBlockerTranslationKeys } from './payrollHelpers'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { Flex } from '@/components/Common'\nimport { useI18n } from '@/i18n'\n\ninterface PayrollBlockerAlertsProps {\n blockers: ApiPayrollBlocker[]\n className?: string\n onMultipleViewClick?: () => void\n multipleViewLabel?: string\n}\n\n/**\n * PayrollBlockerAlerts - Alert-style component for inline blocker display\n * Shows single blocker as alert, or multiple blockers as summary with \"Review\" button\n * Returns null for empty blocker arrays\n */\nexport function PayrollBlockerAlerts({\n blockers,\n onMultipleViewClick,\n multipleViewLabel,\n className,\n}: PayrollBlockerAlertsProps) {\n useI18n('PayrollBlocker')\n const { t } = useTranslation('PayrollBlocker')\n const { Alert, Button, Text, UnorderedList } = useComponentContext()\n\n // Return null for empty blockers array\n if (blockers.length === 0) {\n return null\n }\n\n const hasMultipleBlockers = blockers.length > 1\n\n const enrichedBlockers = blockers.map(blocker => {\n const translationKeys = getBlockerTranslationKeys(blocker.key)\n\n const title = t(translationKeys.titleKey, {\n defaultValue: blocker.key.replace(/_/g, ' ').replace(/\\b\\w/g, l => l.toUpperCase()),\n })\n const description = t(translationKeys.descriptionKey, {\n defaultValue: blocker.message || t('defaultBlockerDescription'),\n })\n const helpText = t(translationKeys.helpTextKey, { defaultValue: t('defaultBlockerHelpText') })\n\n return {\n ...blocker,\n title,\n description,\n helpText,\n }\n })\n\n const singleBlocker = enrichedBlockers[0]\n\n if (!hasMultipleBlockers && singleBlocker) {\n return (\n <Alert status=\"error\" label={singleBlocker.title} className={className}>\n <Flex flexDirection=\"column\" gap={8}>\n <Text>{singleBlocker.description}</Text>\n {singleBlocker.helpText && singleBlocker.helpText !== singleBlocker.description && (\n <Text variant=\"supporting\" size=\"sm\">\n {singleBlocker.helpText}\n </Text>\n )}\n </Flex>\n </Alert>\n )\n }\n\n const listItems = enrichedBlockers.map(blocker => blocker.title)\n const defaultMultipleLabel = multipleViewLabel || t('viewAllBlockers')\n\n return (\n <Alert\n status=\"error\"\n label={t('multipleIssuesTitle', { count: blockers.length })}\n className={className}\n >\n <Flex flexDirection=\"column\" gap={16}>\n <UnorderedList items={listItems} />\n {onMultipleViewClick && (\n <div>\n <Button variant=\"secondary\" onClick={onMultipleViewClick} title={defaultMultipleLabel}>\n {defaultMultipleLabel}\n </Button>\n </div>\n )}\n </Flex>\n </Alert>\n )\n}\n"],"names":["PayrollBlockerAlerts","blockers","onMultipleViewClick","multipleViewLabel","className","useI18n","t","useTranslation","Alert","Button","Text","UnorderedList","useComponentContext","hasMultipleBlockers","enrichedBlockers","blocker","translationKeys","getBlockerTranslationKeys","title","l","description","helpText","singleBlocker","jsx","jsxs","Flex","listItems","defaultMultipleLabel"],"mappings":";;;;;;;;AAkBO,SAASA,EAAqB;AAAA,EACnC,UAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,WAAAC;AACF,GAA8B;AAC5B,EAAAC,EAAQ,gBAAgB;AACxB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,gBAAgB,GACvC,EAAE,OAAAC,GAAO,QAAAC,GAAQ,MAAAC,GAAM,eAAAC,EAAA,IAAkBC,EAAA;AAG/C,MAAIX,EAAS,WAAW;AACtB,WAAO;AAGT,QAAMY,IAAsBZ,EAAS,SAAS,GAExCa,IAAmBb,EAAS,IAAI,CAAAc,MAAW;AAC/C,UAAMC,IAAkBC,EAA0BF,EAAQ,GAAG,GAEvDG,IAAQZ,EAAEU,EAAgB,UAAU;AAAA,MACxC,cAAcD,EAAQ,IAAI,QAAQ,MAAM,GAAG,EAAE,QAAQ,SAAS,CAAAI,MAAKA,EAAE,YAAA,CAAa;AAAA,IAAA,CACnF,GACKC,IAAcd,EAAEU,EAAgB,gBAAgB;AAAA,MACpD,cAAcD,EAAQ,WAAWT,EAAE,2BAA2B;AAAA,IAAA,CAC/D,GACKe,IAAWf,EAAEU,EAAgB,aAAa,EAAE,cAAcV,EAAE,wBAAwB,GAAG;AAE7F,WAAO;AAAA,MACL,GAAGS;AAAA,MACH,OAAAG;AAAA,MACA,aAAAE;AAAA,MACA,UAAAC;AAAA,IAAA;AAAA,EAEJ,CAAC,GAEKC,IAAgBR,EAAiB,CAAC;AAExC,MAAI,CAACD,KAAuBS;AAC1B,WACE,gBAAAC,EAACf,GAAA,EAAM,QAAO,SAAQ,OAAOc,EAAc,OAAO,WAAAlB,GAChD,UAAA,gBAAAoB,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA;AAAA,MAAA,gBAAAF,EAACb,GAAA,EAAM,YAAc,YAAA,CAAY;AAAA,MAChCY,EAAc,YAAYA,EAAc,aAAaA,EAAc,eAClE,gBAAAC,EAACb,GAAA,EAAK,SAAQ,cAAa,MAAK,MAC7B,YAAc,SAAA,CACjB;AAAA,IAAA,EAAA,CAEJ,EAAA,CACF;AAIJ,QAAMgB,IAAYZ,EAAiB,IAAI,CAAAC,MAAWA,EAAQ,KAAK,GACzDY,IAAuBxB,KAAqBG,EAAE,iBAAiB;AAErE,SACE,gBAAAiB;AAAA,IAACf;AAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,OAAOF,EAAE,uBAAuB,EAAE,OAAOL,EAAS,QAAQ;AAAA,MAC1D,WAAAG;AAAA,MAEA,UAAA,gBAAAoB,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,QAAA,gBAAAF,EAACZ,GAAA,EAAc,OAAOe,EAAA,CAAW;AAAA,QAChCxB,KACC,gBAAAqB,EAAC,OAAA,EACC,UAAA,gBAAAA,EAACd,GAAA,EAAO,SAAQ,aAAY,SAASP,GAAqB,OAAOyB,GAC9D,UAAAA,EAAA,CACH,EAAA,CACF;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
export interface PayrollBlocker {
|
|
2
|
+
id: string;
|
|
3
|
+
title: string;
|
|
4
|
+
description: string;
|
|
5
|
+
action?: {
|
|
6
|
+
label: string;
|
|
7
|
+
onClick: () => void;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
interface PayrollBlockerListProps {
|
|
11
|
+
blockers: PayrollBlocker[];
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
2
14
|
/**
|
|
3
15
|
* PayrollBlockerList - DataView-based component displaying payroll blockers
|
|
4
16
|
* Shows each blocker with individual resolution buttons
|
|
5
17
|
*/
|
|
6
18
|
export declare function PayrollBlockerList({ blockers, className }: PayrollBlockerListProps): import("react/jsx-runtime").JSX.Element | null;
|
|
19
|
+
export {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import "./types/i18next.d.ts"
|
|
2
2
|
export { PayrollBlockerAlerts } from './PayrollBlockerAlerts';
|
|
3
|
-
export {
|
|
4
|
-
export type { PayrollBlocker, PayrollBlockerProps, PayrollBlockerListProps, PayrollBlockerStatus, PayrollBlockerResolutionStep, } from './PayrollBlockerTypes';
|
|
3
|
+
export type { ApiPayrollBlocker } from './payrollHelpers';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { PayrollBlockersError } from '@gusto/embedded-api/models/errors/payrollblockerserror';
|
|
2
|
+
import { UnprocessableEntityErrorObject1 } from '@gusto/embedded-api/models/errors/unprocessableentityerrorobject1';
|
|
3
|
+
export interface ApiPayrollBlocker {
|
|
4
|
+
key: string;
|
|
5
|
+
message?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function isPayrollBlockersError(error: unknown): error is PayrollBlockersError;
|
|
8
|
+
export declare function isUnprocessableEntityWithPayrollBlockers(error: unknown): error is UnprocessableEntityErrorObject1;
|
|
9
|
+
export declare function parsePayrollBlockersFromError(error: unknown): ApiPayrollBlocker[];
|
|
10
|
+
export interface PayrollSubmitResult {
|
|
11
|
+
success: boolean;
|
|
12
|
+
blockers: ApiPayrollBlocker[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Direct submit handler for payroll operations that handles payroll blockers
|
|
16
|
+
* Returns blockers if found, otherwise throws the error for caller to handle
|
|
17
|
+
*/
|
|
18
|
+
export declare const payrollSubmitHandler: (payrollHandler: () => Promise<void>) => Promise<PayrollSubmitResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Get translation keys for a blocker - use these in components with useTranslation
|
|
21
|
+
*/
|
|
22
|
+
export declare function getBlockerTranslationKeys(key: string): {
|
|
23
|
+
titleKey: string;
|
|
24
|
+
descriptionKey: string;
|
|
25
|
+
helpTextKey: string;
|
|
26
|
+
defaultActionKey: string;
|
|
27
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { PayrollBlockersError as s } from "@gusto/embedded-api/models/errors/payrollblockerserror";
|
|
2
|
+
import { UnprocessableEntityErrorObject1 as l } from "@gusto/embedded-api/models/errors/unprocessableentityerrorobject1";
|
|
3
|
+
function t(r) {
|
|
4
|
+
return typeof r == "object" && r !== null && "key" in r && typeof r.key == "string";
|
|
5
|
+
}
|
|
6
|
+
function c(r) {
|
|
7
|
+
return r instanceof s;
|
|
8
|
+
}
|
|
9
|
+
function a(r) {
|
|
10
|
+
return r instanceof l && Array.isArray(r.errors) && r.errors.some((o) => o.category === "payroll_blocker");
|
|
11
|
+
}
|
|
12
|
+
function y(r) {
|
|
13
|
+
return c(r) ? !r.errors || r.errors.length === 0 ? [] : r.errors.map((e) => ({ key: t(e.metadata) ? e.metadata.key : e.errorKey || "unknown", message: e.message })) : a(r) ? r.errors.filter((e) => e.category === "payroll_blocker").map((e) => ({ key: t(e.metadata) ? e.metadata.key : e.errorKey || "unknown", message: e.message })) : [];
|
|
14
|
+
}
|
|
15
|
+
const i = (r) => r instanceof s ? !0 : r instanceof l ? Array.isArray(r.errors) && r.errors.some((o) => o.category === "payroll_blocker") : !1, f = async (r) => {
|
|
16
|
+
try {
|
|
17
|
+
return await r(), { success: !0, blockers: [] };
|
|
18
|
+
} catch (o) {
|
|
19
|
+
if (i(o))
|
|
20
|
+
return { success: !1, blockers: y(o) };
|
|
21
|
+
throw o;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
function b(r) {
|
|
25
|
+
return {
|
|
26
|
+
titleKey: `PayrollBlocker:blockers.${r}.title`,
|
|
27
|
+
descriptionKey: `PayrollBlocker:blockers.${r}.description`,
|
|
28
|
+
helpTextKey: `PayrollBlocker:blockers.${r}.helpText`,
|
|
29
|
+
defaultActionKey: `PayrollBlocker:blockers.${r}.defaultAction`
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
b as getBlockerTranslationKeys,
|
|
34
|
+
c as isPayrollBlockersError,
|
|
35
|
+
a as isUnprocessableEntityWithPayrollBlockers,
|
|
36
|
+
y as parsePayrollBlockersFromError,
|
|
37
|
+
f as payrollSubmitHandler
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=payrollHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payrollHelpers.js","sources":["../../../../src/components/Payroll/PayrollBlocker/payrollHelpers.ts"],"sourcesContent":["import { PayrollBlockersError } from '@gusto/embedded-api/models/errors/payrollblockerserror'\nimport { UnprocessableEntityErrorObject1 } from '@gusto/embedded-api/models/errors/unprocessableentityerrorobject1'\n\nfunction hasMetadataKey(metadata: unknown): metadata is { key: string } {\n return (\n typeof metadata === 'object' &&\n metadata !== null &&\n 'key' in metadata &&\n typeof (metadata as { key: unknown }).key === 'string'\n )\n}\n\nexport interface ApiPayrollBlocker {\n key: string\n message?: string\n}\n\nexport function isPayrollBlockersError(error: unknown): error is PayrollBlockersError {\n return error instanceof PayrollBlockersError\n}\n\nexport function isUnprocessableEntityWithPayrollBlockers(\n error: unknown,\n): error is UnprocessableEntityErrorObject1 {\n return (\n error instanceof UnprocessableEntityErrorObject1 &&\n Array.isArray(error.errors) &&\n error.errors.some(err => err.category === 'payroll_blocker')\n )\n}\n\nexport function parsePayrollBlockersFromError(error: unknown): ApiPayrollBlocker[] {\n // Handle PayrollBlockersError (dedicated blocker error type)\n if (isPayrollBlockersError(error)) {\n if (!error.errors || error.errors.length === 0) {\n return []\n }\n\n const blockers = error.errors.map(err => {\n const key = hasMetadataKey(err.metadata) ? err.metadata.key : err.errorKey || 'unknown'\n\n return { key, message: err.message }\n })\n\n return blockers\n }\n\n // Handle UnprocessableEntityErrorObject1 with payroll blockers\n if (isUnprocessableEntityWithPayrollBlockers(error)) {\n const blockers = error.errors\n .filter(err => err.category === 'payroll_blocker')\n .map(err => {\n const key = hasMetadataKey(err.metadata) ? err.metadata.key : err.errorKey || 'unknown'\n\n return { key, message: err.message }\n })\n\n return blockers\n }\n\n return []\n}\n\ntype PayrollBlockerError = PayrollBlockersError | UnprocessableEntityErrorObject1\n\nconst hasPayrollBlockers = (error: unknown): error is PayrollBlockerError => {\n if (error instanceof PayrollBlockersError) {\n return true\n }\n if (error instanceof UnprocessableEntityErrorObject1) {\n return (\n Array.isArray(error.errors) && error.errors.some(err => err.category === 'payroll_blocker')\n )\n }\n return false\n}\n\nexport interface PayrollSubmitResult {\n success: boolean\n blockers: ApiPayrollBlocker[]\n}\n\n/**\n * Direct submit handler for payroll operations that handles payroll blockers\n * Returns blockers if found, otherwise throws the error for caller to handle\n */\nexport const payrollSubmitHandler = async (\n payrollHandler: () => Promise<void>,\n): Promise<PayrollSubmitResult> => {\n try {\n await payrollHandler()\n return { success: true, blockers: [] }\n } catch (error: unknown) {\n if (hasPayrollBlockers(error)) {\n const blockers = parsePayrollBlockersFromError(error)\n return { success: false, blockers }\n }\n\n // For non-payroll errors, re-throw\n throw error\n }\n}\n\n/**\n * Get translation keys for a blocker - use these in components with useTranslation\n */\nexport function getBlockerTranslationKeys(key: string) {\n return {\n titleKey: `PayrollBlocker:blockers.${key}.title`,\n descriptionKey: `PayrollBlocker:blockers.${key}.description`,\n helpTextKey: `PayrollBlocker:blockers.${key}.helpText`,\n defaultActionKey: `PayrollBlocker:blockers.${key}.defaultAction`,\n }\n}\n"],"names":["hasMetadataKey","metadata","isPayrollBlockersError","error","PayrollBlockersError","isUnprocessableEntityWithPayrollBlockers","UnprocessableEntityErrorObject1","err","parsePayrollBlockersFromError","hasPayrollBlockers","payrollSubmitHandler","payrollHandler","getBlockerTranslationKeys","key"],"mappings":";;AAGA,SAASA,EAAeC,GAAgD;AACtE,SACE,OAAOA,KAAa,YACpBA,MAAa,QACb,SAASA,KACT,OAAQA,EAA8B,OAAQ;AAElD;AAOO,SAASC,EAAuBC,GAA+C;AACpF,SAAOA,aAAiBC;AAC1B;AAEO,SAASC,EACdF,GAC0C;AAC1C,SACEA,aAAiBG,KACjB,MAAM,QAAQH,EAAM,MAAM,KAC1BA,EAAM,OAAO,KAAK,CAAAI,MAAOA,EAAI,aAAa,iBAAiB;AAE/D;AAEO,SAASC,EAA8BL,GAAqC;AAEjF,SAAID,EAAuBC,CAAK,IAC1B,CAACA,EAAM,UAAUA,EAAM,OAAO,WAAW,IACpC,CAAA,IAGQA,EAAM,OAAO,IAAI,CAAAI,OAGzB,EAAE,KAFGP,EAAeO,EAAI,QAAQ,IAAIA,EAAI,SAAS,MAAMA,EAAI,YAAY,WAEhE,SAASA,EAAI,QAAA,EAC5B,IAMCF,EAAyCF,CAAK,IAC/BA,EAAM,OACpB,OAAO,CAAAI,MAAOA,EAAI,aAAa,iBAAiB,EAChD,IAAI,CAAAA,OAGI,EAAE,KAFGP,EAAeO,EAAI,QAAQ,IAAIA,EAAI,SAAS,MAAMA,EAAI,YAAY,WAEhE,SAASA,EAAI,QAAA,EAC5B,IAKE,CAAA;AACT;AAIA,MAAME,IAAqB,CAACN,MACtBA,aAAiBC,IACZ,KAELD,aAAiBG,IAEjB,MAAM,QAAQH,EAAM,MAAM,KAAKA,EAAM,OAAO,KAAK,CAAAI,MAAOA,EAAI,aAAa,iBAAiB,IAGvF,IAYIG,IAAuB,OAClCC,MACiC;AACjC,MAAI;AACF,iBAAMA,EAAA,GACC,EAAE,SAAS,IAAM,UAAU,CAAA,EAAC;AAAA,EACrC,SAASR,GAAgB;AACvB,QAAIM,EAAmBN,CAAK;AAE1B,aAAO,EAAE,SAAS,IAAO,UADRK,EAA8BL,CAAK,EAC3B;AAI3B,UAAMA;AAAA,EACR;AACF;AAKO,SAASS,EAA0BC,GAAa;AACrD,SAAO;AAAA,IACL,UAAU,2BAA2BA,CAAG;AAAA,IACxC,gBAAgB,2BAA2BA,CAAG;AAAA,IAC9C,aAAa,2BAA2BA,CAAG;AAAA,IAC3C,kBAAkB,2BAA2BA,CAAG;AAAA,EAAA;AAEpD;"}
|
|
@@ -1,80 +1,90 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useEffect as
|
|
3
|
-
import { useEmployeesListSuspense as
|
|
4
|
-
import { usePayrollsGetSuspense as
|
|
5
|
-
import { usePayrollsCalculateMutation as
|
|
6
|
-
import { PayrollProcessingRequestStatus as
|
|
7
|
-
import { useTranslation as
|
|
8
|
-
import { usePreparedPayrollData as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { componentEvents as
|
|
13
|
-
import { useComponentDictionary as
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
import { jsx as u } from "react/jsx-runtime";
|
|
2
|
+
import { useState as f, useEffect as E } from "react";
|
|
3
|
+
import { useEmployeesListSuspense as A } from "@gusto/embedded-api/react-query/employeesList";
|
|
4
|
+
import { usePayrollsGetSuspense as D } from "@gusto/embedded-api/react-query/payrollsGet";
|
|
5
|
+
import { usePayrollsCalculateMutation as _ } from "@gusto/embedded-api/react-query/payrollsCalculate";
|
|
6
|
+
import { PayrollProcessingRequestStatus as m } from "@gusto/embedded-api/models/components/payrollprocessingrequest";
|
|
7
|
+
import { useTranslation as b } from "react-i18next";
|
|
8
|
+
import { usePreparedPayrollData as q } from "../usePreparedPayrollData.js";
|
|
9
|
+
import { payrollSubmitHandler as O } from "../PayrollBlocker/payrollHelpers.js";
|
|
10
|
+
import { PayrollConfigurationPresentation as k } from "./PayrollConfigurationPresentation.js";
|
|
11
|
+
import { BaseComponent as B } from "../../Base/Base.js";
|
|
12
|
+
import { componentEvents as c } from "../../../shared/constants.js";
|
|
13
|
+
import { useComponentDictionary as N, useI18n as U } from "../../../i18n/I18n.js";
|
|
14
|
+
import { useBase as Y } from "../../Base/useBase.js";
|
|
15
|
+
const x = (e) => e?.status === m.Calculating, T = (e) => e?.status === m.CalculateSuccess;
|
|
16
|
+
function $(e) {
|
|
17
|
+
return /* @__PURE__ */ u(B, { ...e, children: /* @__PURE__ */ u(F, { ...e, children: e.children }) });
|
|
17
18
|
}
|
|
18
|
-
const
|
|
19
|
-
onEvent:
|
|
20
|
-
companyId:
|
|
21
|
-
payrollId:
|
|
22
|
-
dictionary:
|
|
23
|
-
alerts:
|
|
19
|
+
const F = ({
|
|
20
|
+
onEvent: e,
|
|
21
|
+
companyId: l,
|
|
22
|
+
payrollId: s,
|
|
23
|
+
dictionary: y,
|
|
24
|
+
alerts: P
|
|
24
25
|
}) => {
|
|
25
|
-
|
|
26
|
-
const { t:
|
|
26
|
+
N("Payroll.PayrollConfiguration", y), U("Payroll.PayrollConfiguration");
|
|
27
|
+
const { t: p } = b("Payroll.PayrollConfiguration"), { baseSubmitHandler: g } = Y(), [o, r] = f(!1), [C, i] = f([]), { data: d } = A({
|
|
28
|
+
companyId: l
|
|
29
|
+
}), { data: t } = D(
|
|
27
30
|
{
|
|
28
|
-
companyId:
|
|
29
|
-
payrollId:
|
|
31
|
+
companyId: l,
|
|
32
|
+
payrollId: s,
|
|
30
33
|
include: ["taxes", "benefits", "deductions"]
|
|
31
34
|
},
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
35
|
+
{ refetchInterval: o ? 5e3 : !1 }
|
|
36
|
+
), { mutateAsync: S } = _(), {
|
|
37
|
+
preparedPayroll: n,
|
|
38
|
+
paySchedule: L,
|
|
39
|
+
isLoading: R
|
|
40
|
+
} = q({
|
|
41
|
+
companyId: l,
|
|
42
|
+
payrollId: s
|
|
43
|
+
}), h = async () => {
|
|
44
|
+
i([]), await g({}, async () => {
|
|
45
|
+
const a = await O(async () => {
|
|
46
|
+
await S({
|
|
47
|
+
request: {
|
|
48
|
+
companyId: l,
|
|
49
|
+
payrollId: s
|
|
50
|
+
}
|
|
51
|
+
}), r(!0);
|
|
52
|
+
});
|
|
53
|
+
!a.success && a.blockers.length > 0 && i(a.blockers);
|
|
52
54
|
});
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
+
}, w = (a) => {
|
|
56
|
+
e(c.RUN_PAYROLL_EMPLOYEE_EDIT, { employeeId: a.uuid });
|
|
55
57
|
};
|
|
56
|
-
return
|
|
57
|
-
|
|
58
|
-
payrollId:
|
|
59
|
-
alert: { type: "success", title:
|
|
60
|
-
});
|
|
61
|
-
}, [
|
|
62
|
-
|
|
58
|
+
return E(() => {
|
|
59
|
+
x(t.payrollShow?.processingRequest) && !o && r(!0), o && T(t.payrollShow?.processingRequest) && (e(c.RUN_PAYROLL_CALCULATED, {
|
|
60
|
+
payrollId: s,
|
|
61
|
+
alert: { type: "success", title: p("alerts.progressSaved") }
|
|
62
|
+
}), i([]), r(!1)), o && t.payrollShow?.processingRequest?.status === m.ProcessingFailed && (e(c.RUN_PAYROLL_PROCESSING_FAILED), r(!1));
|
|
63
|
+
}, [
|
|
64
|
+
t.payrollShow?.processingRequest,
|
|
65
|
+
o,
|
|
66
|
+
e,
|
|
67
|
+
p,
|
|
68
|
+
s,
|
|
69
|
+
t.payrollShow?.calculatedAt
|
|
70
|
+
]), /* @__PURE__ */ u(
|
|
71
|
+
k,
|
|
63
72
|
{
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
onCalculatePayroll: h,
|
|
74
|
+
onEdit: w,
|
|
75
|
+
employeeCompensations: n?.employeeCompensations || [],
|
|
76
|
+
employeeDetails: d.showEmployees || [],
|
|
77
|
+
payPeriod: n?.payPeriod,
|
|
78
|
+
paySchedule: L,
|
|
79
|
+
isOffCycle: n?.offCycle,
|
|
80
|
+
alerts: P,
|
|
81
|
+
isPending: o || R,
|
|
82
|
+
payrollBlockers: C
|
|
73
83
|
}
|
|
74
84
|
);
|
|
75
85
|
};
|
|
76
86
|
export {
|
|
77
|
-
|
|
78
|
-
|
|
87
|
+
$ as PayrollConfiguration,
|
|
88
|
+
F as Root
|
|
79
89
|
};
|
|
80
90
|
//# sourceMappingURL=PayrollConfiguration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayrollConfiguration.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfiguration.tsx"],"sourcesContent":["import { useEffect, type ReactNode } from 'react'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { usePayrollsCalculateMutation } from '@gusto/embedded-api/react-query/payrollsCalculate'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport {
|
|
1
|
+
{"version":3,"file":"PayrollConfiguration.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfiguration.tsx"],"sourcesContent":["import { useEffect, useState, type ReactNode } from 'react'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport { usePayrollsGetSuspense } from '@gusto/embedded-api/react-query/payrollsGet'\nimport { usePayrollsCalculateMutation } from '@gusto/embedded-api/react-query/payrollsCalculate'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollProcessingRequest } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { PayrollProcessingRequestStatus } from '@gusto/embedded-api/models/components/payrollprocessingrequest'\nimport { useTranslation } from 'react-i18next'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { payrollSubmitHandler, type ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollConfigurationPresentation } from './PayrollConfigurationPresentation'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { componentEvents } from '@/shared/constants'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useBase } from '@/components/Base'\n\nconst isCalculating = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.Calculating\nconst isCalculated = (processingRequest?: PayrollProcessingRequest | null) =>\n processingRequest?.status === PayrollProcessingRequestStatus.CalculateSuccess\n\ninterface PayrollConfigurationProps extends BaseComponentInterface<'Payroll.PayrollConfiguration'> {\n companyId: string\n payrollId: string\n alerts?: ReactNode\n}\n\nexport function PayrollConfiguration(props: PayrollConfigurationProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n onEvent,\n companyId,\n payrollId,\n dictionary,\n alerts,\n}: PayrollConfigurationProps) => {\n useComponentDictionary('Payroll.PayrollConfiguration', dictionary)\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const { baseSubmitHandler } = useBase()\n\n const [isPolling, setIsPolling] = useState(false)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const { data: employeeData } = useEmployeesListSuspense({\n companyId,\n })\n\n const { data: payrollData } = usePayrollsGetSuspense(\n {\n companyId,\n payrollId,\n include: ['taxes', 'benefits', 'deductions'],\n },\n { refetchInterval: isPolling ? 5_000 : false },\n )\n\n const { mutateAsync: calculatePayroll } = usePayrollsCalculateMutation()\n\n const {\n preparedPayroll,\n paySchedule,\n isLoading: isPrepareLoading,\n } = usePreparedPayrollData({\n companyId,\n payrollId,\n })\n\n const onCalculatePayroll = async () => {\n // Clear any existing blockers before attempting calculation\n setPayrollBlockers([])\n\n await baseSubmitHandler({}, async () => {\n const result = await payrollSubmitHandler(async () => {\n await calculatePayroll({\n request: {\n companyId,\n payrollId,\n },\n })\n setIsPolling(true)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onEdit = (employee: Employee) => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_EDIT, { employeeId: employee.uuid })\n }\n\n useEffect(() => {\n // Start polling when payroll is calculating and not already polling\n if (isCalculating(payrollData.payrollShow?.processingRequest) && !isPolling) {\n setIsPolling(true)\n }\n // Stop polling and emit event when payroll is calculated successfully\n if (isPolling && isCalculated(payrollData.payrollShow?.processingRequest)) {\n onEvent(componentEvents.RUN_PAYROLL_CALCULATED, {\n payrollId,\n alert: { type: 'success', title: t('alerts.progressSaved') },\n })\n // Clear blockers on successful calculation\n setPayrollBlockers([])\n setIsPolling(false)\n }\n // If we are polling and payroll is in failed state, stop polling, and emit failure event\n if (\n isPolling &&\n payrollData.payrollShow?.processingRequest?.status ===\n PayrollProcessingRequestStatus.ProcessingFailed\n ) {\n onEvent(componentEvents.RUN_PAYROLL_PROCESSING_FAILED)\n setIsPolling(false)\n }\n }, [\n payrollData.payrollShow?.processingRequest,\n isPolling,\n onEvent,\n t,\n payrollId,\n payrollData.payrollShow?.calculatedAt,\n ])\n\n return (\n <PayrollConfigurationPresentation\n onCalculatePayroll={onCalculatePayroll}\n onEdit={onEdit}\n employeeCompensations={preparedPayroll?.employeeCompensations || []}\n employeeDetails={employeeData.showEmployees || []}\n payPeriod={preparedPayroll?.payPeriod}\n paySchedule={paySchedule}\n isOffCycle={preparedPayroll?.offCycle}\n alerts={alerts}\n isPending={isPolling || isPrepareLoading}\n payrollBlockers={payrollBlockers}\n />\n )\n}\n"],"names":["isCalculating","processingRequest","PayrollProcessingRequestStatus","isCalculated","PayrollConfiguration","props","jsx","BaseComponent","Root","onEvent","companyId","payrollId","dictionary","alerts","useComponentDictionary","useI18n","t","useTranslation","baseSubmitHandler","useBase","isPolling","setIsPolling","useState","payrollBlockers","setPayrollBlockers","employeeData","useEmployeesListSuspense","payrollData","usePayrollsGetSuspense","calculatePayroll","usePayrollsCalculateMutation","preparedPayroll","paySchedule","isPrepareLoading","usePreparedPayrollData","onCalculatePayroll","result","payrollSubmitHandler","onEdit","employee","componentEvents","useEffect","PayrollConfigurationPresentation"],"mappings":";;;;;;;;;;;;;;AAiBA,MAAMA,IAAgB,CAACC,MACrBA,GAAmB,WAAWC,EAA+B,aACzDC,IAAe,CAACF,MACpBA,GAAmB,WAAWC,EAA+B;AAQxD,SAASE,EAAqBC,GAA2D;AAC9F,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GACjB,UAAA,gBAAAC,EAACE,KAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEO,MAAMG,IAAO,CAAC;AAAA,EACnB,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AACF,MAAiC;AAC/B,EAAAC,EAAuB,gCAAgCF,CAAU,GACjEG,EAAQ,8BAA8B;AACtC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,8BAA8B,GACrD,EAAE,mBAAAC,EAAA,IAAsBC,EAAA,GAExB,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAiBC,CAAkB,IAAIF,EAA8B,CAAA,CAAE,GACxE,EAAE,MAAMG,EAAA,IAAiBC,EAAyB;AAAA,IACtD,WAAAhB;AAAA,EAAA,CACD,GAEK,EAAE,MAAMiB,EAAA,IAAgBC;AAAA,IAC5B;AAAA,MACE,WAAAlB;AAAA,MACA,WAAAC;AAAA,MACA,SAAS,CAAC,SAAS,YAAY,YAAY;AAAA,IAAA;AAAA,IAE7C,EAAE,iBAAiBS,IAAY,MAAQ,GAAA;AAAA,EAAM,GAGzC,EAAE,aAAaS,EAAA,IAAqBC,EAAA,GAEpC;AAAA,IACJ,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAWC;AAAA,EAAA,IACTC,EAAuB;AAAA,IACzB,WAAAxB;AAAA,IACA,WAAAC;AAAA,EAAA,CACD,GAEKwB,IAAqB,YAAY;AAErC,IAAAX,EAAmB,CAAA,CAAE,GAErB,MAAMN,EAAkB,CAAA,GAAI,YAAY;AACtC,YAAMkB,IAAS,MAAMC,EAAqB,YAAY;AACpD,cAAMR,EAAiB;AAAA,UACrB,SAAS;AAAA,YACP,WAAAnB;AAAA,YACA,WAAAC;AAAA,UAAA;AAAA,QACF,CACD,GACDU,EAAa,EAAI;AAAA,MACnB,CAAC;AAED,MAAI,CAACe,EAAO,WAAWA,EAAO,SAAS,SAAS,KAC9CZ,EAAmBY,EAAO,QAAQ;AAAA,IAEtC,CAAC;AAAA,EACH,GACME,IAAS,CAACC,MAAuB;AACrC,IAAA9B,EAAQ+B,EAAgB,2BAA2B,EAAE,YAAYD,EAAS,MAAM;AAAA,EAClF;AAEA,SAAAE,EAAU,MAAM;AAEd,IAAIzC,EAAc2B,EAAY,aAAa,iBAAiB,KAAK,CAACP,KAChEC,EAAa,EAAI,GAGfD,KAAajB,EAAawB,EAAY,aAAa,iBAAiB,MACtElB,EAAQ+B,EAAgB,wBAAwB;AAAA,MAC9C,WAAA7B;AAAA,MACA,OAAO,EAAE,MAAM,WAAW,OAAOK,EAAE,sBAAsB,EAAA;AAAA,IAAE,CAC5D,GAEDQ,EAAmB,CAAA,CAAE,GACrBH,EAAa,EAAK,IAIlBD,KACAO,EAAY,aAAa,mBAAmB,WAC1CzB,EAA+B,qBAEjCO,EAAQ+B,EAAgB,6BAA6B,GACrDnB,EAAa,EAAK;AAAA,EAEtB,GAAG;AAAA,IACDM,EAAY,aAAa;AAAA,IACzBP;AAAA,IACAX;AAAA,IACAO;AAAA,IACAL;AAAA,IACAgB,EAAY,aAAa;AAAA,EAAA,CAC1B,GAGC,gBAAArB;AAAA,IAACoC;AAAA,IAAA;AAAA,MACC,oBAAAP;AAAA,MACA,QAAAG;AAAA,MACA,uBAAuBP,GAAiB,yBAAyB,CAAA;AAAA,MACjE,iBAAiBN,EAAa,iBAAiB,CAAA;AAAA,MAC/C,WAAWM,GAAiB;AAAA,MAC5B,aAAAC;AAAA,MACA,YAAYD,GAAiB;AAAA,MAC7B,QAAAlB;AAAA,MACA,WAAWO,KAAaa;AAAA,MACxB,iBAAAV;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -3,16 +3,18 @@ import { EmployeeCompensations } from '@gusto/embedded-api/models/components/pay
|
|
|
3
3
|
import { Employee } from '@gusto/embedded-api/models/components/employee';
|
|
4
4
|
import { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype';
|
|
5
5
|
import { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject';
|
|
6
|
+
import { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers';
|
|
6
7
|
interface PayrollConfigurationPresentationProps {
|
|
7
8
|
employeeCompensations: EmployeeCompensations[];
|
|
8
9
|
employeeDetails: Employee[];
|
|
9
10
|
payPeriod?: PayrollPayPeriodType;
|
|
10
11
|
paySchedule?: PayScheduleObject;
|
|
11
|
-
onBack: () => void;
|
|
12
12
|
onCalculatePayroll: () => void;
|
|
13
13
|
onEdit: (employee: Employee) => void;
|
|
14
14
|
isOffCycle?: boolean;
|
|
15
15
|
alerts?: ReactNode;
|
|
16
|
+
isPending?: boolean;
|
|
17
|
+
payrollBlockers?: ApiPayrollBlocker[];
|
|
16
18
|
}
|
|
17
|
-
export declare const PayrollConfigurationPresentation: ({ employeeCompensations, employeeDetails, payPeriod, paySchedule,
|
|
19
|
+
export declare const PayrollConfigurationPresentation: ({ employeeCompensations, employeeDetails, payPeriod, paySchedule, onEdit, onCalculatePayroll, isOffCycle, alerts, isPending, payrollBlockers, }: PayrollConfigurationPresentationProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
20
|
export {};
|