@gusto/embedded-react-sdk 0.51.2 → 0.52.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.
Files changed (213) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes.d.ts +1 -1
  3. package/dist/components/Common/OnboardingStatusBadge/index.d.ts +1 -1
  4. package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
  5. package/dist/components/Common/UI/FormBox/FormBox.d.ts +9 -0
  6. package/dist/components/Common/UI/FormBox/FormBox.js +13 -0
  7. package/dist/components/Common/UI/FormBox/FormBox.js.map +1 -0
  8. package/dist/components/Common/UI/FormBox/FormBox.module.scss.js +14 -0
  9. package/dist/components/Common/UI/FormBox/FormBox.module.scss.js.map +1 -0
  10. package/dist/components/Common/UI/FormBox/FormBoxTypes.d.ts +26 -0
  11. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.d.ts +9 -0
  12. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.js +23 -0
  13. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.js.map +1 -0
  14. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.module.scss.js +8 -0
  15. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeader.module.scss.js.map +1 -0
  16. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.d.ts +36 -0
  17. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.js +7 -0
  18. package/dist/components/Common/UI/FormBoxHeader/FormBoxHeaderTypes.js.map +1 -0
  19. package/dist/components/Common/UI/FormBoxHeader/index.d.ts +1 -0
  20. package/dist/components/Common/UI/Input/InputTypes.d.ts +1 -0
  21. package/dist/components/Common/UI/Input/InputTypes.js.map +1 -1
  22. package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.d.ts +1 -2
  23. package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.d.ts +1 -1
  24. package/dist/components/Company/BankAccount/BankAccountForm/Form.d.ts +1 -1
  25. package/dist/components/Company/BankAccount/BankAccountVerify/Form.d.ts +1 -1
  26. package/dist/components/Company/DocumentSigner/shared/useSignCompanyForm/signCompanyFormSchema.d.ts +1 -1
  27. package/dist/components/Company/FederalTaxes/useFederalTaxes.d.ts +1 -1
  28. package/dist/components/Company/Locations/LocationForm/Form.d.ts +1 -1
  29. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/payScheduleSchema.d.ts +3 -3
  30. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +1 -1
  31. package/dist/components/Company/StateTaxes/StateTaxes.d.ts +10 -1
  32. package/dist/components/Company/StateTaxes/StateTaxes.js +23 -17
  33. package/dist/components/Company/StateTaxes/StateTaxes.js.map +1 -1
  34. package/dist/components/Company/StateTaxes/StateTaxesComponents.d.ts +2 -0
  35. package/dist/components/Company/StateTaxes/StateTaxesComponents.js +17 -10
  36. package/dist/components/Company/StateTaxes/StateTaxesComponents.js.map +1 -1
  37. package/dist/components/Company/StateTaxes/StateTaxesList/List.js +26 -26
  38. package/dist/components/Company/StateTaxes/StateTaxesList/List.js.map +1 -1
  39. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.d.ts +9 -0
  40. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js +24 -24
  41. package/dist/components/Company/StateTaxes/StateTaxesList/StateTaxesList.js.map +1 -1
  42. package/dist/components/Contractor/Address/Address.d.ts +4 -3
  43. package/dist/components/Contractor/Address/Address.js.map +1 -1
  44. package/dist/components/Contractor/Address/shared/useContractorAddressForm/contractorAddressSchema.d.ts +2 -2
  45. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.d.ts +1 -1
  46. package/dist/components/Contractor/ContractorList/index.js +95 -92
  47. package/dist/components/Contractor/ContractorList/index.js.map +1 -1
  48. package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js +22 -19
  49. package/dist/components/Contractor/Documents/SignatureForm/SignatureForm.js.map +1 -1
  50. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/contractorSignatureFormSchema.d.ts +1 -1
  51. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/useContractorSignatureForm.d.ts +1 -1
  52. package/dist/components/Contractor/Documents/SignatureForm/useContractorSignatureForm/w9Fields.d.ts +1 -1
  53. package/dist/components/Contractor/PaymentMethod/shared/useContractorBankAccountForm/useContractorBankAccountFormSchema.d.ts +1 -1
  54. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.d.ts +1 -1
  55. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.js.map +1 -1
  56. package/dist/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/useContractorPaymentMethodForm.d.ts +2 -2
  57. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
  58. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.d.ts +1 -1
  59. package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
  60. package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js +2 -2
  61. package/dist/components/Contractor/Payments/PaymentFlow/PaymentFlowComponents.js.map +1 -1
  62. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.d.ts +17 -5
  63. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +32 -31
  64. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
  65. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.d.ts +16 -4
  66. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +33 -29
  67. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
  68. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +1 -1
  69. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.d.ts +1 -1
  70. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js +6 -6
  71. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/contractorDetailsSchema.js.map +1 -1
  72. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.d.ts +1 -1
  73. package/dist/components/Employee/Compensation/onboarding/Compensation.d.ts +0 -4
  74. package/dist/components/Employee/Compensation/onboarding/Compensation.js +38 -42
  75. package/dist/components/Employee/Compensation/onboarding/Compensation.js.map +1 -1
  76. package/dist/components/Employee/Compensation/shared/useCompensationForm/compensationSchema.d.ts +2 -2
  77. package/dist/components/Employee/Compensation/shared/useJobForm/jobSchema.d.ts +1 -1
  78. package/dist/components/Employee/Dashboard/index.d.ts +1 -1
  79. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/childSupportGarnishmentFormSchema.d.ts +1 -1
  80. package/dist/components/Employee/Deductions/shared/useChildSupportGarnishmentForm/useChildSupportGarnishmentForm.d.ts +1 -1
  81. package/dist/components/Employee/Deductions/shared/useDeductionForm/deductionFormSchema.d.ts +2 -2
  82. package/dist/components/Employee/Documents/onboarding/DocumentSigner/EmploymentEligibility/EmploymentEligibilitySchema.d.ts +2 -2
  83. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +1 -4
  84. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
  85. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.d.ts +2 -2
  86. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js +27 -32
  87. package/dist/components/Employee/Documents/shared/useSignEmployeeForm/signEmployeeFormSchema.js.map +1 -1
  88. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +1 -2
  89. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
  90. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/federalTaxesSchema.d.ts +2 -2
  91. package/dist/components/Employee/FederalTaxes/shared/useFederalTaxesForm/useFederalTaxesForm.d.ts +1 -1
  92. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.d.ts +1 -1
  93. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js +1 -3
  94. package/dist/components/Employee/OnboardingExecutionFlow/onboardingExecutionStateMachine.js.map +1 -1
  95. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +55 -49
  96. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
  97. package/dist/components/Employee/PaymentMethod/shared/useBankForm/useBankFormSchema.d.ts +1 -1
  98. package/dist/components/Employee/PaymentMethod/shared/useSplitPaymentsForm/useSplitPaymentsFormSchema.d.ts +1 -1
  99. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/employeeDetailsSchema.d.ts +2 -2
  100. package/dist/components/Employee/Profile/shared/useHomeAddressForm/homeAddressSchema.d.ts +1 -1
  101. package/dist/components/Employee/Profile/shared/useHomeAddressForm/useHomeAddressForm.d.ts +1 -1
  102. package/dist/components/Employee/exports/employeeManagement.d.ts +1 -1
  103. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.d.ts +4 -5
  104. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js +101 -125
  105. package/dist/components/InformationRequests/InformationRequestForm/InformationRequestForm.js.map +1 -1
  106. package/dist/components/InformationRequests/InformationRequestsComponents.d.ts +0 -5
  107. package/dist/components/InformationRequests/InformationRequestsComponents.js +12 -13
  108. package/dist/components/InformationRequests/InformationRequestsComponents.js.map +1 -1
  109. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js +4 -4
  110. package/dist/components/Payroll/Dismissal/DismissalFlowComponents.js.map +1 -1
  111. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.d.ts +1 -1
  112. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js +8 -8
  113. package/dist/components/Payroll/OffCycle/OffCycleFlowComponents.js.map +1 -1
  114. package/dist/components/Payroll/OffCycle/index.d.ts +1 -1
  115. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +1 -1
  116. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +97 -92
  117. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  118. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +2 -3
  119. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  120. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +2 -2
  121. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +1 -1
  122. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  123. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +57 -56
  124. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  125. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  126. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.d.ts +23 -6
  127. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js +37 -33
  128. package/dist/components/Payroll/PayrollExecutionFlow/PayrollExecutionFlow.js.map +1 -1
  129. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +2 -2
  130. package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js +6 -6
  131. package/dist/components/Payroll/PayrollFlow/PayrollExecutionFlowContextual.js.map +1 -1
  132. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +1 -1
  133. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  134. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +1 -1
  135. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  136. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  137. package/dist/components/Payroll/PayrollList/PayrollListPresentation.d.ts +1 -1
  138. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +1 -1
  139. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  140. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +1 -1
  141. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +31 -31
  142. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  143. package/dist/components/Payroll/RecoveryCases/RecoveryCases.d.ts +9 -5
  144. package/dist/components/Payroll/RecoveryCases/RecoveryCases.js.map +1 -1
  145. package/dist/components/Payroll/Transition/TransitionFlowComponents.d.ts +1 -1
  146. package/dist/components/Payroll/Transition/TransitionFlowComponents.js +1 -1
  147. package/dist/components/Payroll/Transition/TransitionFlowComponents.js.map +1 -1
  148. package/dist/components/Payroll/Transition/index.d.ts +1 -1
  149. package/dist/components/Payroll/helpers.d.ts +22 -8
  150. package/dist/components/Payroll/helpers.js +1 -1
  151. package/dist/components/Payroll/helpers.js.map +1 -1
  152. package/dist/components/Payroll/index.d.ts +3 -2
  153. package/dist/components/Payroll/payrollTypes.d.ts +1 -1
  154. package/dist/components/Payroll/payrollTypes.js +1 -1
  155. package/dist/components/Payroll/payrollTypes.js.map +1 -1
  156. package/dist/components/Payroll/usePreparedPayrollData.d.ts +1 -1
  157. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  158. package/dist/components/TimeOff/TimeOffFlow/timeOffPolicyTypes.d.ts +1 -1
  159. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js +19 -19
  160. package/dist/components/TimeOff/TimeOffManagement/SelectEmployees/useSelectEmployeesData.js.map +1 -1
  161. package/dist/contexts/ApiProvider/ApiProvider.d.ts +5 -5
  162. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  163. package/dist/contexts/ApiProvider/apiVersion.d.ts +2 -2
  164. package/dist/contexts/ApiProvider/apiVersion.js +1 -1
  165. package/dist/contexts/ApiProvider/apiVersion.js.map +1 -1
  166. package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js +40 -36
  167. package/dist/contexts/ComponentAdapter/adapters/defaultComponentAdapter.js.map +1 -1
  168. package/dist/contexts/ComponentAdapter/componentAdapterTypes.d.ts +2 -0
  169. package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.d.ts +5 -0
  170. package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js +18 -16
  171. package/dist/contexts/ComponentAdapter/createComponentsWithDefaults.js.map +1 -1
  172. package/dist/contexts/ComponentAdapter/useComponentContext.d.ts +6 -0
  173. package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
  174. package/dist/contexts/GustoProvider/GustoProvider.d.ts +4 -5
  175. package/dist/contexts/GustoProvider/GustoProvider.js +6 -6
  176. package/dist/contexts/GustoProvider/GustoProvider.js.map +1 -1
  177. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +7 -7
  178. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +8 -8
  179. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  180. package/dist/contexts/GustoProvider/index.d.ts +1 -1
  181. package/dist/contexts/index.d.ts +2 -6
  182. package/dist/i18n/en/Contractor.ContractorList.json.js +18 -16
  183. package/dist/i18n/en/Contractor.ContractorList.json.js.map +1 -1
  184. package/dist/i18n/en/Contractor.SignatureForm.json.js +5 -5
  185. package/dist/i18n/en/Employee.OnboardingSummary.json.js +24 -20
  186. package/dist/i18n/en/Employee.OnboardingSummary.json.js.map +1 -1
  187. package/dist/i18n/types.d.ts +8 -0
  188. package/dist/index.d.ts +8 -7
  189. package/dist/index.js +121 -134
  190. package/dist/index.js.map +1 -1
  191. package/dist/models/WA_RISK_CODES.d.ts +5 -2
  192. package/dist/models/WA_RISK_CODES.js.map +1 -1
  193. package/dist/models/external.d.ts +67 -57
  194. package/dist/partner-hook-utils/composeErrorHandler.d.ts +9 -4
  195. package/dist/partner-hook-utils/composeErrorHandler.js.map +1 -1
  196. package/dist/partner-hook-utils/form/SDKFormProvider.d.ts +10 -2
  197. package/dist/partner-hook-utils/form/SDKFormProvider.js +7 -1
  198. package/dist/partner-hook-utils/form/SDKFormProvider.js.map +1 -1
  199. package/dist/partner-hook-utils/form/composeSubmitHandler.d.ts +7 -4
  200. package/dist/partner-hook-utils/form/composeSubmitHandler.js.map +1 -1
  201. package/dist/partner-hook-utils/form/fields/index.d.ts +1 -0
  202. package/dist/partner-hook-utils/form/index.d.ts +3 -3
  203. package/dist/partner-hook-utils/form/useHookFieldResolution.js.map +1 -1
  204. package/dist/partner-hook-utils/index.d.ts +1 -1
  205. package/dist/partner-hook-utils/types.d.ts +7 -3
  206. package/dist/shared/constants.d.ts +2 -2
  207. package/dist/shared/constants.js +4 -4
  208. package/dist/shared/constants.js.map +1 -1
  209. package/dist/style.css +1 -1
  210. package/dist/types/Helpers.d.ts +11 -0
  211. package/dist/types/hooks.d.ts +1 -1
  212. package/docs/guides/endpoint-inventory.json +379 -379
  213. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/Contractor/ContractorList/index.tsx"],"sourcesContent":["import { type Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport { useTranslation } from 'react-i18next'\nimport { useContractorsDeleteMutation } from '@gusto/embedded-api/react-query/contractorsDelete'\nimport { useContractors } from './useContractorList'\nimport { ActionsLayout, DataView, EmptyData, Flex, useDataView } from '@/components/Common'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { ContractorOnboardingStatusBadge } from '@/components/Common/OnboardingStatusBadge'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents, CONTRACTOR_TYPE } from '@/shared/constants'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\n\ninterface HeadProps {\n count: number\n handleAdd: () => void\n}\nfunction Head({ count, handleAdd }: HeadProps) {\n const { Button, Heading } = useComponentContext()\n const { t } = useTranslation('Contractor.ContractorList')\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\">\n <Heading as=\"h2\">{t('title')}</Heading>\n\n {count !== 0 && (\n <Button variant=\"secondary\" onClick={handleAdd}>\n {t('addAnotherCta')}\n </Button>\n )}\n </Flex>\n )\n}\n\ninterface EmptyDataContractorsListProps {\n handleAdd: () => void\n}\nfunction EmptyDataContractorsList({ handleAdd }: EmptyDataContractorsListProps) {\n const { Button } = useComponentContext()\n const { t } = useTranslation('Contractor.ContractorList')\n\n return (\n <EmptyData title={t('emptyTableTitle')} description={t('emptyTableDescription')}>\n <ActionsLayout justifyContent=\"center\">\n <Button onClick={handleAdd}>{t('addContractorCta')}</Button>\n </ActionsLayout>\n </EmptyData>\n )\n}\n\n/**\n * Props for {@link ContractorList}.\n *\n * @public\n */\nexport interface ContractorListProps extends BaseComponentInterface<'Contractor.ContractorList'> {\n /** UUID of the company whose contractors should be listed. */\n companyId: string\n /** Success message to display in an alert above the list, typically after a create, update, or delete action. */\n successMessage?: string\n}\n\n/**\n * Lists a company's contractors with controls to add, edit, delete, and continue onboarding.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/create` | The add-contractor action was triggered. | — |\n * | `contractor/update` | A contractor row's edit action was triggered. | `{ contractorId: string }` |\n * | `contractor/deleted` | A contractor was successfully deleted. | `{ contractorId: string }` |\n * | `contractor/onboarding/continue` | The continue action was triggered to advance onboarding. | — |\n *\n * @param props - See {@link ContractorListProps}.\n * @returns The rendered contractor list.\n * @public\n */\nexport function ContractorList(props: ContractorListProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nfunction Root({ companyId, className, dictionary, successMessage }: ContractorListProps) {\n useI18n('Contractor.ContractorList')\n useComponentDictionary('Contractor.ContractorList', dictionary)\n const { t } = useTranslation('Contractor.ContractorList')\n const { onEvent, baseSubmitHandler } = useBase()\n const { Alert, Button } = useComponentContext()\n const {\n contractors,\n totalCount,\n handleNextPage,\n handleFirstPage,\n handleLastPage,\n handlePreviousPage,\n handleItemsPerPageChange,\n currentPage,\n totalPages,\n itemsPerPage,\n } = useContractors({ companyUuid: companyId })\n const { mutateAsync: deleteContractorMutation, isPending: isPendingDelete } =\n useContractorsDeleteMutation()\n\n const dataViewProps = useDataView<Contractor>({\n columns: [\n {\n title: t('listHeaders.name'),\n render: contractor =>\n contractor.type === CONTRACTOR_TYPE.BUSINESS\n ? contractor.businessName\n : firstLastName({ first_name: contractor.firstName, last_name: contractor.lastName }),\n },\n {\n title: t('listHeaders.status'),\n render: ({ onboarded, onboardingStatus }) => (\n <ContractorOnboardingStatusBadge\n onboarded={onboarded}\n onboardingStatus={onboardingStatus}\n />\n ),\n },\n ],\n data: contractors,\n itemMenu: contractor => (\n <HamburgerMenu\n items={[\n {\n label: t('editCta'),\n icon: <PencilSvg aria-hidden />,\n onClick: () => {\n handleEdit(contractor.uuid)\n },\n },\n {\n label: t('deleteCta'),\n icon: <TrashCanSvg aria-hidden />,\n onClick: () => {\n void handleDelete(contractor.uuid)\n },\n },\n ]}\n triggerLabel={t('editCta')}\n isLoading={isPendingDelete}\n />\n ),\n emptyState: () => <EmptyDataContractorsList handleAdd={handleAdd} />,\n pagination: {\n handleNextPage,\n handleFirstPage,\n handleLastPage,\n handlePreviousPage,\n handleItemsPerPageChange,\n currentPage,\n totalPages,\n totalCount,\n itemsPerPage,\n },\n })\n\n const handleAdd = () => {\n onEvent(componentEvents.CONTRACTOR_CREATE)\n }\n\n const handleEdit = (uuid: string) => {\n onEvent(componentEvents.CONTRACTOR_UPDATE, { contractorId: uuid })\n }\n\n const handleContinue = () => {\n onEvent(componentEvents.CONTRACTOR_ONBOARDING_CONTINUE)\n }\n\n const handleDelete = async (uuid: string) => {\n await baseSubmitHandler(uuid, async payload => {\n await deleteContractorMutation({\n request: { contractorUuid: payload },\n })\n\n onEvent(componentEvents.CONTRACTOR_DELETED, { contractorId: payload })\n })\n }\n\n return (\n <section className={className}>\n {successMessage && <Alert label={successMessage} status=\"success\" />}\n <Flex flexDirection=\"column\">\n <Head count={totalCount} handleAdd={handleAdd} />\n <DataView label={t('contractorListLabel')} {...dataViewProps} />\n <ActionsLayout>\n <Button onClick={handleContinue} isLoading={false}>\n {t('continueCta')}\n </Button>\n </ActionsLayout>\n </Flex>\n </section>\n )\n}\n"],"names":["Head","count","handleAdd","Button","Heading","useComponentContext","t","useTranslation","jsxs","Flex","jsx","EmptyDataContractorsList","EmptyData","ActionsLayout","ContractorList","props","BaseComponent","Root","companyId","className","dictionary","successMessage","useI18n","useComponentDictionary","onEvent","baseSubmitHandler","useBase","Alert","contractors","totalCount","handleNextPage","handleFirstPage","handleLastPage","handlePreviousPage","handleItemsPerPageChange","currentPage","totalPages","itemsPerPage","useContractors","deleteContractorMutation","isPendingDelete","useContractorsDeleteMutation","dataViewProps","useDataView","contractor","CONTRACTOR_TYPE","firstLastName","onboarded","onboardingStatus","ContractorOnboardingStatusBadge","HamburgerMenu","PencilSvg","handleEdit","TrashCanSvg","handleDelete","componentEvents","uuid","handleContinue","payload","DataView"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/Contractor/ContractorList/index.tsx"],"sourcesContent":["import { type Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport { useTranslation } from 'react-i18next'\nimport { useContractorsDeleteMutation } from '@gusto/embedded-api/react-query/contractorsDelete'\nimport { useContractors } from './useContractorList'\nimport { ActionsLayout, DataView, EmptyData, Flex, useDataView } from '@/components/Common'\nimport { firstLastName } from '@/helpers/formattedStrings'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { ContractorOnboardingStatusBadge } from '@/components/Common/OnboardingStatusBadge'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents, CONTRACTOR_TYPE, ContractorOnboardingStatus } from '@/shared/constants'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\n\ninterface HeadProps {\n count: number\n handleAdd: () => void\n}\nfunction Head({ count, handleAdd }: HeadProps) {\n const { Button, Heading } = useComponentContext()\n const { t } = useTranslation('Contractor.ContractorList')\n\n return (\n <Flex alignItems=\"center\" justifyContent=\"space-between\">\n <Heading as=\"h2\">{t('title')}</Heading>\n\n {count !== 0 && (\n <Button variant=\"secondary\" onClick={handleAdd}>\n {t('addAnotherCta')}\n </Button>\n )}\n </Flex>\n )\n}\n\ninterface EmptyDataContractorsListProps {\n handleAdd: () => void\n}\nfunction EmptyDataContractorsList({ handleAdd }: EmptyDataContractorsListProps) {\n const { Button } = useComponentContext()\n const { t } = useTranslation('Contractor.ContractorList')\n\n return (\n <EmptyData title={t('emptyTableTitle')} description={t('emptyTableDescription')}>\n <ActionsLayout justifyContent=\"center\">\n <Button onClick={handleAdd}>{t('addContractorCta')}</Button>\n </ActionsLayout>\n </EmptyData>\n )\n}\n\n/**\n * Props for {@link ContractorList}.\n *\n * @public\n */\nexport interface ContractorListProps extends BaseComponentInterface<'Contractor.ContractorList'> {\n /** UUID of the company whose contractors should be listed. */\n companyId: string\n /** Success message to display in an alert above the list, typically after a create, update, or delete action. */\n successMessage?: string\n}\n\n/**\n * Lists a company's contractors with controls to add, edit, delete, and continue onboarding.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/create` | The add-contractor action was triggered. | — |\n * | `contractor/update` | A contractor row's edit action was triggered. | `{ contractorId: string }` |\n * | `contractor/deleted` | A contractor was successfully deleted. | `{ contractorId: string }` |\n * | `contractor/onboarding/continue` | The continue action was triggered to advance onboarding. | — |\n *\n * @param props - See {@link ContractorListProps}.\n * @returns The rendered contractor list.\n * @public\n */\nexport function ContractorList(props: ContractorListProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nfunction Root({ companyId, className, dictionary, successMessage }: ContractorListProps) {\n useI18n('Contractor.ContractorList')\n useComponentDictionary('Contractor.ContractorList', dictionary)\n const { t } = useTranslation('Contractor.ContractorList')\n const { onEvent, baseSubmitHandler } = useBase()\n const { Alert, Button } = useComponentContext()\n const {\n contractors,\n totalCount,\n handleNextPage,\n handleFirstPage,\n handleLastPage,\n handlePreviousPage,\n handleItemsPerPageChange,\n currentPage,\n totalPages,\n itemsPerPage,\n } = useContractors({ companyUuid: companyId })\n const { mutateAsync: deleteContractorMutation, isPending: isPendingDelete } =\n useContractorsDeleteMutation()\n\n const dataViewProps = useDataView<Contractor>({\n columns: [\n {\n title: t('listHeaders.name'),\n render: contractor =>\n contractor.type === CONTRACTOR_TYPE.BUSINESS\n ? contractor.businessName\n : firstLastName({ first_name: contractor.firstName, last_name: contractor.lastName }),\n },\n {\n title: t('listHeaders.status'),\n render: ({ onboarded, onboardingStatus }) => (\n <ContractorOnboardingStatusBadge\n onboarded={onboarded}\n onboardingStatus={onboardingStatus}\n />\n ),\n },\n ],\n data: contractors,\n itemMenu: contractor => {\n const isAwaitingSelfOnboardingReview =\n contractor.onboardingStatus === ContractorOnboardingStatus.SELF_ONBOARDING_REVIEW\n const editLabel = isAwaitingSelfOnboardingReview ? t('reviewCta') : t('editCta')\n\n return (\n <HamburgerMenu\n items={[\n {\n label: editLabel,\n icon: <PencilSvg aria-hidden />,\n onClick: () => {\n handleEdit(contractor.uuid)\n },\n },\n {\n label: t('deleteCta'),\n icon: <TrashCanSvg aria-hidden />,\n onClick: () => {\n void handleDelete(contractor.uuid)\n },\n },\n ]}\n triggerLabel={editLabel}\n isLoading={isPendingDelete}\n />\n )\n },\n emptyState: () => <EmptyDataContractorsList handleAdd={handleAdd} />,\n pagination: {\n handleNextPage,\n handleFirstPage,\n handleLastPage,\n handlePreviousPage,\n handleItemsPerPageChange,\n currentPage,\n totalPages,\n totalCount,\n itemsPerPage,\n },\n })\n\n const handleAdd = () => {\n onEvent(componentEvents.CONTRACTOR_CREATE)\n }\n\n const handleEdit = (uuid: string) => {\n onEvent(componentEvents.CONTRACTOR_UPDATE, { contractorId: uuid })\n }\n\n const handleContinue = () => {\n onEvent(componentEvents.CONTRACTOR_ONBOARDING_CONTINUE)\n }\n\n const handleDelete = async (uuid: string) => {\n await baseSubmitHandler(uuid, async payload => {\n await deleteContractorMutation({\n request: { contractorUuid: payload },\n })\n\n onEvent(componentEvents.CONTRACTOR_DELETED, { contractorId: payload })\n })\n }\n\n return (\n <section className={className}>\n {successMessage && <Alert label={successMessage} status=\"success\" />}\n <Flex flexDirection=\"column\">\n <Head count={totalCount} handleAdd={handleAdd} />\n <DataView label={t('contractorListLabel')} {...dataViewProps} />\n <ActionsLayout>\n <Button onClick={handleContinue} isLoading={false}>\n {t('continueCta')}\n </Button>\n </ActionsLayout>\n </Flex>\n </section>\n )\n}\n"],"names":["Head","count","handleAdd","Button","Heading","useComponentContext","t","useTranslation","jsxs","Flex","jsx","EmptyDataContractorsList","EmptyData","ActionsLayout","ContractorList","props","BaseComponent","Root","companyId","className","dictionary","successMessage","useI18n","useComponentDictionary","onEvent","baseSubmitHandler","useBase","Alert","contractors","totalCount","handleNextPage","handleFirstPage","handleLastPage","handlePreviousPage","handleItemsPerPageChange","currentPage","totalPages","itemsPerPage","useContractors","deleteContractorMutation","isPendingDelete","useContractorsDeleteMutation","dataViewProps","useDataView","contractor","CONTRACTOR_TYPE","firstLastName","onboarded","onboardingStatus","ContractorOnboardingStatusBadge","isAwaitingSelfOnboardingReview","ContractorOnboardingStatus","editLabel","HamburgerMenu","PencilSvg","handleEdit","TrashCanSvg","handleDelete","componentEvents","uuid","handleContinue","payload","DataView"],"mappings":"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"}
@@ -2,8 +2,8 @@ import { jsx as e, jsxs as s, Fragment as _ } from "react/jsx-runtime";
2
2
  import { useTranslation as p, Trans as v } from "react-i18next";
3
3
  import { useContractorSignatureForm as S } from "./useContractorSignatureForm/useContractorSignatureForm.js";
4
4
  import { useComponentDictionary as F, useI18n as y } from "../../../../i18n/I18n.js";
5
- import { BaseComponent as E, BaseLayout as h } from "../../../Base/Base.js";
6
- import { useBase as T } from "../../../Base/useBase.js";
5
+ import { BaseComponent as T, BaseLayout as h } from "../../../Base/Base.js";
6
+ import { useBase as E } from "../../../Base/useBase.js";
7
7
  import { Flex as l } from "../../../Common/Flex/Flex.js";
8
8
  import { ActionsLayout as A } from "../../../Common/ActionsLayout/ActionsLayout.js";
9
9
  import { useComponentContext as f } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
@@ -13,11 +13,11 @@ import { SDKFormProvider as M } from "../../../../partner-hook-utils/form/SDKFor
13
13
  import { contractorEvents as I, componentEvents as H } from "../../../../shared/constants.js";
14
14
  const L = "https://www.irs.gov/forms-pubs/about-form-w-9";
15
15
  function $(o) {
16
- return /* @__PURE__ */ e(E, { ...o, children: /* @__PURE__ */ e(N, { ...o }) });
16
+ return /* @__PURE__ */ e(T, { ...o, children: /* @__PURE__ */ e(N, { ...o }) });
17
17
  }
18
18
  function N({ documentUuid: o, dictionary: i }) {
19
19
  F("Contractor.SignatureForm", i), y("Contractor.SignatureForm");
20
- const { t: n } = p("Contractor.SignatureForm"), { onEvent: t } = T(), c = f(), r = S({ documentUuid: o });
20
+ const { t: n } = p("Contractor.SignatureForm"), { onEvent: t } = E(), c = f(), r = S({ documentUuid: o });
21
21
  if (r.isLoading)
22
22
  return /* @__PURE__ */ e(h, { isLoading: !0, error: r.errorHandling.errors });
23
23
  const { document: a, pdfUrl: d, hasFields: u } = r.data, { isPending: m } = r.status, { Agree: C } = r.form.Fields, x = async () => {
@@ -57,7 +57,7 @@ function N({ documentUuid: o, dictionary: i }) {
57
57
  }
58
58
  ) })
59
59
  ] }),
60
- u ? /* @__PURE__ */ e(R, { hookResult: r }) : /* @__PURE__ */ e(
60
+ u ? /* @__PURE__ */ e(P, { hookResult: r }) : /* @__PURE__ */ e(
61
61
  C,
62
62
  {
63
63
  label: n("agreeLabel"),
@@ -70,7 +70,7 @@ function N({ documentUuid: o, dictionary: i }) {
70
70
  ] })
71
71
  ] }) }) }) });
72
72
  }
73
- function R({ hookResult: o }) {
73
+ function P({ hookResult: o }) {
74
74
  const { t: i } = p("Contractor.SignatureForm"), n = f(), { Fields: t, fieldsMetadata: c } = o.form, r = k(), a = {
75
75
  REQUIRED: i("validation.required")
76
76
  };
@@ -257,7 +257,7 @@ function R({ hookResult: o }) {
257
257
  /* @__PURE__ */ e(n.Text, { variant: "supporting", children: i("sectionInstructions.certification") })
258
258
  ] }),
259
259
  children: /* @__PURE__ */ s(l, { flexDirection: "column", gap: 16, children: [
260
- /* @__PURE__ */ e(P, {}),
260
+ /* @__PURE__ */ e(R, {}),
261
261
  t.SignatureText && /* @__PURE__ */ e(
262
262
  t.SignatureText,
263
263
  {
@@ -277,21 +277,24 @@ function R({ hookResult: o }) {
277
277
  )
278
278
  ] });
279
279
  }
280
- function P() {
280
+ function R() {
281
281
  const { t: o } = p("Contractor.SignatureForm"), i = f();
282
282
  return /* @__PURE__ */ s(l, { flexDirection: "column", gap: 8, children: [
283
283
  /* @__PURE__ */ e(i.Text, { weight: "medium", children: o("certificationIntro") }),
284
- /* @__PURE__ */ e(
285
- i.OrderedList,
286
- {
287
- items: [
288
- /* @__PURE__ */ e(i.Text, { children: o("certificationPoints.taxpayerId") }, "taxpayerId"),
289
- /* @__PURE__ */ e(i.Text, { children: o("certificationPoints.backupWithholding") }, "backupWithholding"),
290
- /* @__PURE__ */ e(i.Text, { children: o("certificationPoints.usPerson") }, "usPerson"),
291
- /* @__PURE__ */ e(i.Text, { children: o("certificationPoints.fatca") }, "fatca")
292
- ]
293
- }
294
- )
284
+ /* @__PURE__ */ s(l, { flexDirection: "column", gap: 16, children: [
285
+ /* @__PURE__ */ e(
286
+ i.OrderedList,
287
+ {
288
+ items: [
289
+ /* @__PURE__ */ e(i.Text, { children: o("certificationPoints.taxpayerId") }, "taxpayerId"),
290
+ /* @__PURE__ */ e(i.Text, { children: o("certificationPoints.backupWithholding") }, "backupWithholding"),
291
+ /* @__PURE__ */ e(i.Text, { children: o("certificationPoints.usPerson") }, "usPerson"),
292
+ /* @__PURE__ */ e(i.Text, { children: o("certificationPoints.fatca") }, "fatca")
293
+ ]
294
+ }
295
+ ),
296
+ /* @__PURE__ */ e(i.Text, { variant: "supporting", size: "sm", children: o("certificationPoints.usPersonDefinition") })
297
+ ] })
295
298
  ] });
296
299
  }
297
300
  function k() {
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureForm.js","sources":["../../../../../src/components/Contractor/Documents/SignatureForm/SignatureForm.tsx"],"sourcesContent":["import { Trans, useTranslation } from 'react-i18next'\nimport {\n useContractorSignatureForm,\n type UseContractorSignatureFormReady,\n} from './useContractorSignatureForm'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent, BaseLayout } from '@/components/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { ActionsLayout, Flex } from '@/components/Common'\nimport { Form as FormLayout } from '@/components/Common/Form'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { contractorEvents, componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\n/** IRS instructions page for completing Form W-9. */\nconst W9_INSTRUCTIONS_URL = 'https://www.irs.gov/forms-pubs/about-form-w-9'\n\n/**\n * Props for {@link SignatureForm}.\n *\n * @public\n */\nexport interface SignatureFormProps extends BaseComponentInterface<'Contractor.SignatureForm'> {\n /** The UUID of the contractor document to sign. */\n documentUuid: string\n /** The associated contractor identifier. */\n contractorId: string\n}\n\n/**\n * Standalone form for signing an individual contractor document (W-9).\n *\n * @remarks\n * Lower-level building block used internally by `ContractorDocumentSigner` for\n * its signing view. Use this component directly when you need full control over\n * navigation between the document list and the signature form.\n *\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/documents/sign` | Fired when the document is successfully signed | The signed document |\n * | `CANCEL` | Fired when the user navigates back from the signature form | — |\n *\n * @param props - See {@link SignatureFormProps}.\n * @returns The rendered signature form.\n * @public\n */\nexport function SignatureForm(props: SignatureFormProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nfunction Root({ documentUuid, dictionary }: SignatureFormProps) {\n useComponentDictionary('Contractor.SignatureForm', dictionary)\n useI18n('Contractor.SignatureForm')\n const { t } = useTranslation('Contractor.SignatureForm')\n const { onEvent } = useBase()\n const Components = useComponentContext()\n\n const hookResult = useContractorSignatureForm({ documentUuid })\n\n if (hookResult.isLoading) {\n return <BaseLayout isLoading error={hookResult.errorHandling.errors} />\n }\n\n const { document, pdfUrl, hasFields } = hookResult.data\n const { isPending } = hookResult.status\n const { Agree } = hookResult.form.Fields\n\n const handleFormSubmit = async () => {\n const result = await hookResult.actions.onSubmit()\n if (result) {\n onEvent(contractorEvents.CONTRACTOR_SIGN_DOCUMENT, result.data)\n }\n }\n\n const handleBack = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n return (\n <BaseLayout error={hookResult.errorHandling.errors}>\n <SDKFormProvider formHookResult={hookResult}>\n <FormLayout onSubmit={handleFormSubmit}>\n <Flex flexDirection=\"column\" gap={32} alignItems=\"stretch\">\n <Flex flexDirection=\"column\" gap={4}>\n <Components.Heading as=\"h2\">\n {document.title ?? t('signatureRequired')}\n </Components.Heading>\n <Components.Text variant=\"supporting\">\n <Components.Link\n href={W9_INSTRUCTIONS_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {t('instructions')}\n </Components.Link>\n </Components.Text>\n {pdfUrl && (\n <Components.Text variant=\"supporting\">\n <Trans\n t={t}\n i18nKey=\"downloadPrompt\"\n components={{\n downloadLink: (\n <Components.Link\n href={pdfUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n download={`${document.title || 'document'}.pdf`}\n />\n ),\n }}\n />\n </Components.Text>\n )}\n </Flex>\n\n {hasFields ? (\n <W9Fields hookResult={hookResult} />\n ) : (\n <Agree\n label={t('agreeLabel')}\n validationMessages={{ AGREE_REQUIRED: t('validation.agreeRequired') }}\n />\n )}\n\n <ActionsLayout>\n <Components.Button variant=\"secondary\" type=\"button\" onClick={handleBack}>\n {t('backCta')}\n </Components.Button>\n <Components.Button type=\"submit\" isDisabled={isPending}>\n {hasFields\n ? isPending\n ? t('signingCta')\n : t('signCta')\n : isPending\n ? t('acknowledgingCta')\n : t('acknowledgeCta')}\n </Components.Button>\n </ActionsLayout>\n </Flex>\n </FormLayout>\n </SDKFormProvider>\n </BaseLayout>\n )\n}\n\ninterface W9FieldsProps {\n hookResult: UseContractorSignatureFormReady\n}\n\nfunction W9Fields({ hookResult }: W9FieldsProps) {\n const { t } = useTranslation('Contractor.SignatureForm')\n const Components = useComponentContext()\n const { Fields, fieldsMetadata } = hookResult.form\n const copy = useSignatureFormCopy()\n\n const requiredMessages = {\n REQUIRED: t('validation.required'),\n }\n\n return (\n <>\n {/* Classification */}\n <Components.Box>\n <Flex flexDirection=\"column\" gap={16}>\n {Fields.Name && (\n <Fields.Name\n label={t('fields.name.label')}\n description={t('fields.name.description')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.BusinessName && (\n <Fields.BusinessName\n label={t('fields.business_name.label')}\n description={t('fields.business_name.description')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.TaxClassification && (\n <Fields.TaxClassification\n label={t('fields.taxClassification.label')}\n description={t('fields.taxClassification.description')}\n validationMessages={requiredMessages}\n getOptionLabel={value => copy.taxClassificationOptions[value] ?? value}\n />\n )}\n {Fields.LlcClassificationCode && (\n <Fields.LlcClassificationCode\n label={t('fields.llcClassificationCode.label')}\n description={t('fields.llcClassificationCode.description')}\n validationMessages={requiredMessages}\n placeholder={copy.llcPlaceholder}\n getOptionLabel={value => copy.llcClassificationOptions[value] ?? value}\n />\n )}\n {Fields.OtherText && (\n <Fields.OtherText\n label={t('fields.other_text.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.ForeignPartners && (\n <Fields.ForeignPartners\n label={t('fields.foreign_partners.label')}\n description={t('fields.foreign_partners.description')}\n />\n )}\n </Flex>\n </Components.Box>\n\n {/* Exemptions */}\n {(Fields.ExemptPayeeCode || Fields.ExemptionFromFatca) && (\n <Components.Box\n header={\n <Flex flexDirection=\"column\" gap={2}>\n <Components.Heading as=\"h3\">{t('sections.exemptions')}</Components.Heading>\n <Components.Text variant=\"supporting\">\n {t('sectionInstructions.exemptions')}\n </Components.Text>\n </Flex>\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n {Fields.ExemptPayeeCode && (\n <Fields.ExemptPayeeCode\n label={t('fields.exempt_payee_code.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.ExemptionFromFatca && (\n <Fields.ExemptionFromFatca\n label={t('fields.exemption_from_FATCA.label')}\n description={t('fields.exemption_from_FATCA.description')}\n validationMessages={requiredMessages}\n />\n )}\n </Flex>\n </Components.Box>\n )}\n\n {/* Address */}\n <Components.Box\n header={\n <Flex flexDirection=\"column\" gap={2}>\n <Components.Heading as=\"h3\">{t('sections.address')}</Components.Heading>\n <Components.Text variant=\"supporting\">\n {t('sectionInstructions.address')}\n </Components.Text>\n </Flex>\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n {Fields.HomeAddressStreet1 && (\n <Fields.HomeAddressStreet1\n label={t('fields.home_address_street_1.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.HomeAddressStreet2 && (\n <Fields.HomeAddressStreet2\n label={t('fields.home_address_street_2.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.HomeAddressCity && (\n <Fields.HomeAddressCity\n label={t('fields.home_address_city.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.HomeAddressState && (\n <Fields.HomeAddressState\n label={t('fields.home_address_state.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.HomeAddressZip && (\n <Fields.HomeAddressZip\n label={t('fields.home_address_zip.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.AccountNumber && (\n <Fields.AccountNumber\n label={t('fields.account_number.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.CompanyName && (\n <Fields.CompanyName\n label={t('fields.company_name.label')}\n validationMessages={requiredMessages}\n />\n )}\n </Flex>\n </Components.Box>\n\n {/* Taxpayer Identification Number */}\n {(Fields.Ssn || Fields.Ein) && (\n <Components.Box\n header={\n <Flex flexDirection=\"column\" gap={2}>\n <Components.Heading as=\"h3\">{t('sections.tin')}</Components.Heading>\n <Components.Text variant=\"supporting\">\n {t('sectionInstructions.tin')} {t('sectionInstructions.tinSecondary')}\n </Components.Text>\n </Flex>\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n {Fields.Ssn && (\n <Fields.Ssn\n label={t('fields.ssn.label')}\n validationMessages={{\n ...requiredMessages,\n INVALID_SSN: t('validation.invalidSsn'),\n }}\n placeholder={fieldsMetadata.ssn.placeholder}\n />\n )}\n {Fields.Ein && (\n <Fields.Ein\n label={t('fields.ein.label')}\n validationMessages={{\n ...requiredMessages,\n INVALID_EIN: t('validation.invalidEin'),\n }}\n placeholder={fieldsMetadata.ein.placeholder}\n />\n )}\n </Flex>\n </Components.Box>\n )}\n\n {/* Certification */}\n <Components.Box\n header={\n <Flex flexDirection=\"column\" gap={2}>\n <Components.Heading as=\"h3\">{t('sections.certification')}</Components.Heading>\n <Components.Text variant=\"supporting\">\n {t('sectionInstructions.certification')}\n </Components.Text>\n </Flex>\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n <CertificationDeclaration />\n {Fields.SignatureText && (\n <Fields.SignatureText\n label={t('fields.signature_text.label')}\n validationMessages={requiredMessages}\n />\n )}\n <Fields.Agree\n label={t('agreeLabel')}\n validationMessages={{ AGREE_REQUIRED: t('validation.agreeRequired') }}\n />\n </Flex>\n </Components.Box>\n </>\n )\n}\n\nfunction CertificationDeclaration() {\n const { t } = useTranslation('Contractor.SignatureForm')\n const Components = useComponentContext()\n\n return (\n <Flex flexDirection=\"column\" gap={8}>\n <Components.Text weight=\"medium\">{t('certificationIntro')}</Components.Text>\n <Components.OrderedList\n items={[\n <Components.Text key=\"taxpayerId\">{t('certificationPoints.taxpayerId')}</Components.Text>,\n <Components.Text key=\"backupWithholding\">\n {t('certificationPoints.backupWithholding')}\n </Components.Text>,\n <Components.Text key=\"usPerson\">{t('certificationPoints.usPerson')}</Components.Text>,\n <Components.Text key=\"fatca\">{t('certificationPoints.fatca')}</Components.Text>,\n ]}\n />\n </Flex>\n )\n}\n\n/**\n * Resolves the W-9 classification option copy into lookup maps keyed by option\n * value. Each entry uses a static translation key so the typed `t` surface stays\n * sound.\n */\nfunction useSignatureFormCopy() {\n const { t } = useTranslation('Contractor.SignatureForm')\n\n const taxClassificationOptions: Record<string, string> = {\n individual_proprietor: t('options.taxClassification.individual_proprietor'),\n c_corporation: t('options.taxClassification.c_corporation'),\n s_corporation: t('options.taxClassification.s_corporation'),\n partnership: t('options.taxClassification.partnership'),\n trust_estate: t('options.taxClassification.trust_estate'),\n limited_liability_company: t('options.taxClassification.limited_liability_company'),\n other: t('options.taxClassification.other'),\n }\n\n const llcClassificationOptions: Record<string, string> = {\n c: t('options.llcClassificationCode.c'),\n s: t('options.llcClassificationCode.s'),\n p: t('options.llcClassificationCode.p'),\n }\n\n return {\n taxClassificationOptions,\n llcClassificationOptions,\n llcPlaceholder: t('options.llcClassificationCode.placeholder'),\n }\n}\n"],"names":["W9_INSTRUCTIONS_URL","SignatureForm","props","jsx","BaseComponent","Root","documentUuid","dictionary","useComponentDictionary","useI18n","t","useTranslation","onEvent","useBase","Components","useComponentContext","hookResult","useContractorSignatureForm","BaseLayout","document","pdfUrl","hasFields","isPending","Agree","handleFormSubmit","result","contractorEvents","handleBack","componentEvents","SDKFormProvider","FormLayout","jsxs","Flex","Trans","W9Fields","ActionsLayout","Fields","fieldsMetadata","copy","useSignatureFormCopy","requiredMessages","Fragment","value","CertificationDeclaration","taxClassificationOptions","llcClassificationOptions"],"mappings":"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"}
1
+ {"version":3,"file":"SignatureForm.js","sources":["../../../../../src/components/Contractor/Documents/SignatureForm/SignatureForm.tsx"],"sourcesContent":["import { Trans, useTranslation } from 'react-i18next'\nimport {\n useContractorSignatureForm,\n type UseContractorSignatureFormReady,\n} from './useContractorSignatureForm'\nimport { useI18n, useComponentDictionary } from '@/i18n'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent, BaseLayout } from '@/components/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { ActionsLayout, Flex } from '@/components/Common'\nimport { Form as FormLayout } from '@/components/Common/Form'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { contractorEvents, componentEvents } from '@/shared/constants'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\n/** IRS instructions page for completing Form W-9. */\nconst W9_INSTRUCTIONS_URL = 'https://www.irs.gov/forms-pubs/about-form-w-9'\n\n/**\n * Props for {@link SignatureForm}.\n *\n * @public\n */\nexport interface SignatureFormProps extends BaseComponentInterface<'Contractor.SignatureForm'> {\n /** The UUID of the contractor document to sign. */\n documentUuid: string\n /** The associated contractor identifier. */\n contractorId: string\n}\n\n/**\n * Standalone form for signing an individual contractor document (W-9).\n *\n * @remarks\n * Lower-level building block used internally by `ContractorDocumentSigner` for\n * its signing view. Use this component directly when you need full control over\n * navigation between the document list and the signature form.\n *\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/documents/sign` | Fired when the document is successfully signed | The signed document |\n * | `CANCEL` | Fired when the user navigates back from the signature form | — |\n *\n * @param props - See {@link SignatureFormProps}.\n * @returns The rendered signature form.\n * @public\n */\nexport function SignatureForm(props: SignatureFormProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nfunction Root({ documentUuid, dictionary }: SignatureFormProps) {\n useComponentDictionary('Contractor.SignatureForm', dictionary)\n useI18n('Contractor.SignatureForm')\n const { t } = useTranslation('Contractor.SignatureForm')\n const { onEvent } = useBase()\n const Components = useComponentContext()\n\n const hookResult = useContractorSignatureForm({ documentUuid })\n\n if (hookResult.isLoading) {\n return <BaseLayout isLoading error={hookResult.errorHandling.errors} />\n }\n\n const { document, pdfUrl, hasFields } = hookResult.data\n const { isPending } = hookResult.status\n const { Agree } = hookResult.form.Fields\n\n const handleFormSubmit = async () => {\n const result = await hookResult.actions.onSubmit()\n if (result) {\n onEvent(contractorEvents.CONTRACTOR_SIGN_DOCUMENT, result.data)\n }\n }\n\n const handleBack = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n return (\n <BaseLayout error={hookResult.errorHandling.errors}>\n <SDKFormProvider formHookResult={hookResult}>\n <FormLayout onSubmit={handleFormSubmit}>\n <Flex flexDirection=\"column\" gap={32} alignItems=\"stretch\">\n <Flex flexDirection=\"column\" gap={4}>\n <Components.Heading as=\"h2\">\n {document.title ?? t('signatureRequired')}\n </Components.Heading>\n <Components.Text variant=\"supporting\">\n <Components.Link\n href={W9_INSTRUCTIONS_URL}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {t('instructions')}\n </Components.Link>\n </Components.Text>\n {pdfUrl && (\n <Components.Text variant=\"supporting\">\n <Trans\n t={t}\n i18nKey=\"downloadPrompt\"\n components={{\n downloadLink: (\n <Components.Link\n href={pdfUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n download={`${document.title || 'document'}.pdf`}\n />\n ),\n }}\n />\n </Components.Text>\n )}\n </Flex>\n\n {hasFields ? (\n <W9Fields hookResult={hookResult} />\n ) : (\n <Agree\n label={t('agreeLabel')}\n validationMessages={{ AGREE_REQUIRED: t('validation.agreeRequired') }}\n />\n )}\n\n <ActionsLayout>\n <Components.Button variant=\"secondary\" type=\"button\" onClick={handleBack}>\n {t('backCta')}\n </Components.Button>\n <Components.Button type=\"submit\" isDisabled={isPending}>\n {hasFields\n ? isPending\n ? t('signingCta')\n : t('signCta')\n : isPending\n ? t('acknowledgingCta')\n : t('acknowledgeCta')}\n </Components.Button>\n </ActionsLayout>\n </Flex>\n </FormLayout>\n </SDKFormProvider>\n </BaseLayout>\n )\n}\n\ninterface W9FieldsProps {\n hookResult: UseContractorSignatureFormReady\n}\n\nfunction W9Fields({ hookResult }: W9FieldsProps) {\n const { t } = useTranslation('Contractor.SignatureForm')\n const Components = useComponentContext()\n const { Fields, fieldsMetadata } = hookResult.form\n const copy = useSignatureFormCopy()\n\n const requiredMessages = {\n REQUIRED: t('validation.required'),\n }\n\n return (\n <>\n {/* Classification */}\n <Components.Box>\n <Flex flexDirection=\"column\" gap={16}>\n {Fields.Name && (\n <Fields.Name\n label={t('fields.name.label')}\n description={t('fields.name.description')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.BusinessName && (\n <Fields.BusinessName\n label={t('fields.business_name.label')}\n description={t('fields.business_name.description')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.TaxClassification && (\n <Fields.TaxClassification\n label={t('fields.taxClassification.label')}\n description={t('fields.taxClassification.description')}\n validationMessages={requiredMessages}\n getOptionLabel={value => copy.taxClassificationOptions[value] ?? value}\n />\n )}\n {Fields.LlcClassificationCode && (\n <Fields.LlcClassificationCode\n label={t('fields.llcClassificationCode.label')}\n description={t('fields.llcClassificationCode.description')}\n validationMessages={requiredMessages}\n placeholder={copy.llcPlaceholder}\n getOptionLabel={value => copy.llcClassificationOptions[value] ?? value}\n />\n )}\n {Fields.OtherText && (\n <Fields.OtherText\n label={t('fields.other_text.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.ForeignPartners && (\n <Fields.ForeignPartners\n label={t('fields.foreign_partners.label')}\n description={t('fields.foreign_partners.description')}\n />\n )}\n </Flex>\n </Components.Box>\n\n {/* Exemptions */}\n {(Fields.ExemptPayeeCode || Fields.ExemptionFromFatca) && (\n <Components.Box\n header={\n <Flex flexDirection=\"column\" gap={2}>\n <Components.Heading as=\"h3\">{t('sections.exemptions')}</Components.Heading>\n <Components.Text variant=\"supporting\">\n {t('sectionInstructions.exemptions')}\n </Components.Text>\n </Flex>\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n {Fields.ExemptPayeeCode && (\n <Fields.ExemptPayeeCode\n label={t('fields.exempt_payee_code.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.ExemptionFromFatca && (\n <Fields.ExemptionFromFatca\n label={t('fields.exemption_from_FATCA.label')}\n description={t('fields.exemption_from_FATCA.description')}\n validationMessages={requiredMessages}\n />\n )}\n </Flex>\n </Components.Box>\n )}\n\n {/* Address */}\n <Components.Box\n header={\n <Flex flexDirection=\"column\" gap={2}>\n <Components.Heading as=\"h3\">{t('sections.address')}</Components.Heading>\n <Components.Text variant=\"supporting\">\n {t('sectionInstructions.address')}\n </Components.Text>\n </Flex>\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n {Fields.HomeAddressStreet1 && (\n <Fields.HomeAddressStreet1\n label={t('fields.home_address_street_1.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.HomeAddressStreet2 && (\n <Fields.HomeAddressStreet2\n label={t('fields.home_address_street_2.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.HomeAddressCity && (\n <Fields.HomeAddressCity\n label={t('fields.home_address_city.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.HomeAddressState && (\n <Fields.HomeAddressState\n label={t('fields.home_address_state.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.HomeAddressZip && (\n <Fields.HomeAddressZip\n label={t('fields.home_address_zip.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.AccountNumber && (\n <Fields.AccountNumber\n label={t('fields.account_number.label')}\n validationMessages={requiredMessages}\n />\n )}\n {Fields.CompanyName && (\n <Fields.CompanyName\n label={t('fields.company_name.label')}\n validationMessages={requiredMessages}\n />\n )}\n </Flex>\n </Components.Box>\n\n {/* Taxpayer Identification Number */}\n {(Fields.Ssn || Fields.Ein) && (\n <Components.Box\n header={\n <Flex flexDirection=\"column\" gap={2}>\n <Components.Heading as=\"h3\">{t('sections.tin')}</Components.Heading>\n <Components.Text variant=\"supporting\">\n {t('sectionInstructions.tin')} {t('sectionInstructions.tinSecondary')}\n </Components.Text>\n </Flex>\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n {Fields.Ssn && (\n <Fields.Ssn\n label={t('fields.ssn.label')}\n validationMessages={{\n ...requiredMessages,\n INVALID_SSN: t('validation.invalidSsn'),\n }}\n placeholder={fieldsMetadata.ssn.placeholder}\n />\n )}\n {Fields.Ein && (\n <Fields.Ein\n label={t('fields.ein.label')}\n validationMessages={{\n ...requiredMessages,\n INVALID_EIN: t('validation.invalidEin'),\n }}\n placeholder={fieldsMetadata.ein.placeholder}\n />\n )}\n </Flex>\n </Components.Box>\n )}\n\n {/* Certification */}\n <Components.Box\n header={\n <Flex flexDirection=\"column\" gap={2}>\n <Components.Heading as=\"h3\">{t('sections.certification')}</Components.Heading>\n <Components.Text variant=\"supporting\">\n {t('sectionInstructions.certification')}\n </Components.Text>\n </Flex>\n }\n >\n <Flex flexDirection=\"column\" gap={16}>\n <CertificationDeclaration />\n {Fields.SignatureText && (\n <Fields.SignatureText\n label={t('fields.signature_text.label')}\n validationMessages={requiredMessages}\n />\n )}\n <Fields.Agree\n label={t('agreeLabel')}\n validationMessages={{ AGREE_REQUIRED: t('validation.agreeRequired') }}\n />\n </Flex>\n </Components.Box>\n </>\n )\n}\n\nfunction CertificationDeclaration() {\n const { t } = useTranslation('Contractor.SignatureForm')\n const Components = useComponentContext()\n\n return (\n <Flex flexDirection=\"column\" gap={8}>\n <Components.Text weight=\"medium\">{t('certificationIntro')}</Components.Text>\n <Flex flexDirection=\"column\" gap={16}>\n <Components.OrderedList\n items={[\n <Components.Text key=\"taxpayerId\">\n {t('certificationPoints.taxpayerId')}\n </Components.Text>,\n <Components.Text key=\"backupWithholding\">\n {t('certificationPoints.backupWithholding')}\n </Components.Text>,\n <Components.Text key=\"usPerson\">{t('certificationPoints.usPerson')}</Components.Text>,\n <Components.Text key=\"fatca\">{t('certificationPoints.fatca')}</Components.Text>,\n ]}\n />\n <Components.Text variant=\"supporting\" size=\"sm\">\n {t('certificationPoints.usPersonDefinition')}\n </Components.Text>\n </Flex>\n </Flex>\n )\n}\n\n/**\n * Resolves the W-9 classification option copy into lookup maps keyed by option\n * value. Each entry uses a static translation key so the typed `t` surface stays\n * sound.\n */\nfunction useSignatureFormCopy() {\n const { t } = useTranslation('Contractor.SignatureForm')\n\n const taxClassificationOptions: Record<string, string> = {\n individual_proprietor: t('options.taxClassification.individual_proprietor'),\n c_corporation: t('options.taxClassification.c_corporation'),\n s_corporation: t('options.taxClassification.s_corporation'),\n partnership: t('options.taxClassification.partnership'),\n trust_estate: t('options.taxClassification.trust_estate'),\n limited_liability_company: t('options.taxClassification.limited_liability_company'),\n other: t('options.taxClassification.other'),\n }\n\n const llcClassificationOptions: Record<string, string> = {\n c: t('options.llcClassificationCode.c'),\n s: t('options.llcClassificationCode.s'),\n p: t('options.llcClassificationCode.p'),\n }\n\n return {\n taxClassificationOptions,\n llcClassificationOptions,\n llcPlaceholder: t('options.llcClassificationCode.placeholder'),\n }\n}\n"],"names":["W9_INSTRUCTIONS_URL","SignatureForm","props","jsx","BaseComponent","Root","documentUuid","dictionary","useComponentDictionary","useI18n","t","useTranslation","onEvent","useBase","Components","useComponentContext","hookResult","useContractorSignatureForm","BaseLayout","document","pdfUrl","hasFields","isPending","Agree","handleFormSubmit","result","contractorEvents","handleBack","componentEvents","SDKFormProvider","FormLayout","jsxs","Flex","Trans","W9Fields","ActionsLayout","Fields","fieldsMetadata","copy","useSignatureFormCopy","requiredMessages","Fragment","value","CertificationDeclaration","taxClassificationOptions","llcClassificationOptions"],"mappings":"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"}
@@ -97,7 +97,7 @@ export type ContractorSignatureFormOutputs = ContractorSignatureFormData;
97
97
  *
98
98
  * @public
99
99
  */
100
- export type ContractorSignatureOptionalFieldsToRequire = { create?: ("businessName" | "llcClassificationCode" | "otherText" | "foreignPartners" | "exemptPayeeCode" | "exemptionFromFatca" | "homeAddressStreet2" | "accountNumber" | "companyName")[] | undefined; update?: ("businessName" | "llcClassificationCode" | "otherText" | "foreignPartners" | "exemptPayeeCode" | "exemptionFromFatca" | "homeAddressStreet2" | "accountNumber" | "companyName")[] | undefined; };
100
+ export type ContractorSignatureOptionalFieldsToRequire = { create?: ("accountNumber" | "businessName" | "companyName" | "exemptPayeeCode" | "exemptionFromFatca" | "foreignPartners" | "homeAddressStreet2" | "llcClassificationCode" | "otherText")[] | undefined; update?: ("accountNumber" | "businessName" | "companyName" | "exemptPayeeCode" | "exemptionFromFatca" | "foreignPartners" | "homeAddressStreet2" | "llcClassificationCode" | "otherText")[] | undefined; };
101
101
  /**
102
102
  * Options for {@link createContractorSignatureFormSchema}.
103
103
  *
@@ -63,7 +63,7 @@ export type UseContractorSignatureFormResult = HookLoadingResult | UseContractor
63
63
  *
64
64
  * @public
65
65
  */
66
- export type ContractorSignatureFieldsMetadata = { name: FieldMetadata; businessName: FieldMetadata; taxClassification: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<"other" | "individual_proprietor" | "c_corporation" | "s_corporation" | "partnership" | "trust_estate" | "limited_liability_company">; llcClassificationCode: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<"c" | "s" | "p">; otherText: FieldMetadata; foreignPartners: FieldMetadata; exemptPayeeCode: FieldMetadata; exemptionFromFatca: FieldMetadata; homeAddressStreet1: FieldMetadata; homeAddressStreet2: FieldMetadata; homeAddressCity: FieldMetadata; homeAddressState: FieldMetadata; homeAddressZip: FieldMetadata; accountNumber: FieldMetadata; companyName: FieldMetadata; ssn: FieldMetadata; ein: FieldMetadata; signatureText: FieldMetadata; agree: FieldMetadata; };
66
+ export type ContractorSignatureFieldsMetadata = { name: FieldMetadata; businessName: FieldMetadata; taxClassification: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<"c_corporation" | "individual_proprietor" | "limited_liability_company" | "other" | "partnership" | "s_corporation" | "trust_estate">; llcClassificationCode: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<"c" | "p" | "s">; otherText: FieldMetadata; foreignPartners: FieldMetadata; exemptPayeeCode: FieldMetadata; exemptionFromFatca: FieldMetadata; homeAddressStreet1: FieldMetadata; homeAddressStreet2: FieldMetadata; homeAddressCity: FieldMetadata; homeAddressState: FieldMetadata; homeAddressZip: FieldMetadata; accountNumber: FieldMetadata; companyName: FieldMetadata; ssn: FieldMetadata; ein: FieldMetadata; signatureText: FieldMetadata; agree: FieldMetadata; };
67
67
  /**
68
68
  * Headless hook for signing a contractor document — collects the document's
69
69
  * fields plus a typed signature and consent.
@@ -79,7 +79,7 @@ export declare const TAX_CLASSIFICATION_OPTION_KEYS: readonly ["individual_propr
79
79
  *
80
80
  * @internal
81
81
  */
82
- export type TaxClassificationOptionKey = (typeof TAX_CLASSIFICATION_OPTION_KEYS)[number];
82
+ export type TaxClassificationOptionKey = "c_corporation" | "individual_proprietor" | "limited_liability_company" | "other" | "partnership" | "s_corporation" | "trust_estate";
83
83
  /**
84
84
  * The classification option that reveals the LLC tax classification select.
85
85
  *
@@ -36,7 +36,7 @@ export type ContractorAccountType = (typeof ACCOUNT_TYPES)[number];
36
36
  *
37
37
  * @public
38
38
  */
39
- export type ContractorBankAccountFormField = "name" | "accountNumber" | "routingNumber" | "accountType";
39
+ export type ContractorBankAccountFormField = "accountNumber" | "accountType" | "name" | "routingNumber";
40
40
  /**
41
41
  * Shape of the values managed by the contractor bank account form.
42
42
  *
@@ -27,7 +27,7 @@ export declare const PAYMENT_METHOD_TYPES: readonly ["Direct Deposit", "Check"];
27
27
  *
28
28
  * @public
29
29
  */
30
- export type ContractorPaymentMethodFormType = (typeof PAYMENT_METHOD_TYPES)[number];
30
+ export type ContractorPaymentMethodFormType = "Check" | "Direct Deposit";
31
31
  /**
32
32
  * Field names accepted by the contractor payment method form.
33
33
  *
@@ -1 +1 @@
1
- {"version":3,"file":"contractorPaymentMethodSchema.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n buildFormSchema,\n type RequiredFieldConfig,\n} from '@/partner-hook-utils/form/buildFormSchema'\nimport { PAYMENT_METHODS } from '@/shared/constants'\n\n/**\n * Validation error codes emitted by the contractor payment method form schema.\n * Map these codes to localized copy in `validationMessages` when composing the\n * hook.\n *\n * @public\n */\nexport const ContractorPaymentMethodErrorCodes = {\n REQUIRED: 'REQUIRED',\n} as const\n\n/**\n * Union of validation error code strings emitted by the contractor payment\n * method form schema.\n *\n * @public\n */\nexport type ContractorPaymentMethodErrorCode =\n (typeof ContractorPaymentMethodErrorCodes)[keyof typeof ContractorPaymentMethodErrorCodes]\n\n/**\n * Supported payment method type values: direct deposit and check.\n *\n * @public\n */\nexport const PAYMENT_METHOD_TYPES = [PAYMENT_METHODS.directDeposit, PAYMENT_METHODS.check] as const\n\n/**\n * Union of payment method type values that the form accepts.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormType = (typeof PAYMENT_METHOD_TYPES)[number]\n\nconst fieldValidators = {\n type: z.enum(PAYMENT_METHOD_TYPES),\n}\n\n/**\n * Field names accepted by the contractor payment method form.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormField = keyof typeof fieldValidators\n\n/**\n * Shape of the values managed by the contractor payment method form.\n *\n * @public\n * @interface\n */\nexport type ContractorPaymentMethodFormData = {\n [K in keyof typeof fieldValidators]: z.infer<(typeof fieldValidators)[K]>\n}\n\n/**\n * Shape of the validated values produced by the contractor payment method form\n * on submit. Internal seam between the form's input and parsed-output types; the\n * two coincide today, and partners consume the parsed values through\n * `form.getFormSubmissionValues` (typed as the form-data shape).\n *\n * @internal\n */\nexport type ContractorPaymentMethodFormOutputs = ContractorPaymentMethodFormData\n\nconst requiredFieldsConfig = {} satisfies RequiredFieldConfig<typeof fieldValidators>\n\n/** @internal */\nexport function createContractorPaymentMethodSchema() {\n return buildFormSchema(fieldValidators, {\n requiredFieldsConfig,\n requiredErrorCode: ContractorPaymentMethodErrorCodes.REQUIRED,\n mode: 'update',\n })\n}\n"],"names":["ContractorPaymentMethodErrorCodes","PAYMENT_METHOD_TYPES","PAYMENT_METHODS","fieldValidators","z","requiredFieldsConfig","createContractorPaymentMethodSchema","buildFormSchema"],"mappings":";;;AAcO,MAAMA,IAAoC;AAAA,EAC/C,UAAU;AACZ,GAgBaC,IAAuB,CAACC,EAAgB,eAAeA,EAAgB,KAAK,GASnFC,IAAkB;AAAA,EACtB,MAAMC,EAAE,KAAKH,CAAoB;AACnC,GA6BMI,IAAuB,CAAA;AAGtB,SAASC,IAAsC;AACpD,SAAOC,EAAgBJ,GAAiB;AAAA,IACtC,sBAAAE;AAAA,IACA,mBAAmBL,EAAkC;AAAA,IACrD,MAAM;AAAA,EAAA,CACP;AACH;"}
1
+ {"version":3,"file":"contractorPaymentMethodSchema.js","sources":["../../../../../../src/components/Contractor/PaymentMethod/shared/useContractorPaymentMethodForm/contractorPaymentMethodSchema.ts"],"sourcesContent":["import { z } from 'zod'\nimport {\n buildFormSchema,\n type RequiredFieldConfig,\n} from '@/partner-hook-utils/form/buildFormSchema'\nimport { PAYMENT_METHODS } from '@/shared/constants'\n\n/**\n * Validation error codes emitted by the contractor payment method form schema.\n * Map these codes to localized copy in `validationMessages` when composing the\n * hook.\n *\n * @public\n */\nexport const ContractorPaymentMethodErrorCodes = {\n REQUIRED: 'REQUIRED',\n} as const\n\n/**\n * Union of validation error code strings emitted by the contractor payment\n * method form schema.\n *\n * @public\n */\nexport type ContractorPaymentMethodErrorCode =\n (typeof ContractorPaymentMethodErrorCodes)[keyof typeof ContractorPaymentMethodErrorCodes]\n\n/**\n * Supported payment method type values: direct deposit and check.\n *\n * @public\n */\nexport const PAYMENT_METHOD_TYPES = [PAYMENT_METHODS.directDeposit, PAYMENT_METHODS.check] as const\n\n/**\n * Union of payment method type values that the form accepts.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormType = (typeof PAYMENT_METHODS)[keyof typeof PAYMENT_METHODS]\n\nconst fieldValidators = {\n type: z.enum(PAYMENT_METHOD_TYPES),\n}\n\n/**\n * Field names accepted by the contractor payment method form.\n *\n * @public\n */\nexport type ContractorPaymentMethodFormField = keyof typeof fieldValidators\n\n/**\n * Shape of the values managed by the contractor payment method form.\n *\n * @public\n * @interface\n */\nexport type ContractorPaymentMethodFormData = {\n [K in keyof typeof fieldValidators]: z.infer<(typeof fieldValidators)[K]>\n}\n\n/**\n * Shape of the validated values produced by the contractor payment method form\n * on submit. Internal seam between the form's input and parsed-output types; the\n * two coincide today, and partners consume the parsed values through\n * `form.getFormSubmissionValues` (typed as the form-data shape).\n *\n * @internal\n */\nexport type ContractorPaymentMethodFormOutputs = ContractorPaymentMethodFormData\n\nconst requiredFieldsConfig = {} satisfies RequiredFieldConfig<typeof fieldValidators>\n\n/** @internal */\nexport function createContractorPaymentMethodSchema() {\n return buildFormSchema(fieldValidators, {\n requiredFieldsConfig,\n requiredErrorCode: ContractorPaymentMethodErrorCodes.REQUIRED,\n mode: 'update',\n })\n}\n"],"names":["ContractorPaymentMethodErrorCodes","PAYMENT_METHOD_TYPES","PAYMENT_METHODS","fieldValidators","z","requiredFieldsConfig","createContractorPaymentMethodSchema","buildFormSchema"],"mappings":";;;AAcO,MAAMA,IAAoC;AAAA,EAC/C,UAAU;AACZ,GAgBaC,IAAuB,CAACC,EAAgB,eAAeA,EAAgB,KAAK,GASnFC,IAAkB;AAAA,EACtB,MAAMC,EAAE,KAAKH,CAAoB;AACnC,GA6BMI,IAAuB,CAAA;AAGtB,SAASC,IAAsC;AACpD,SAAOC,EAAgBJ,GAAiB;AAAA,IACtC,sBAAAE;AAAA,IACA,mBAAmBL,EAAkC;AAAA,IACrD,MAAM;AAAA,EAAA,CACP;AACH;"}
@@ -1,7 +1,7 @@
1
1
  import { ComponentType } from 'react';
2
2
  import { UseFormProps } from 'react-hook-form';
3
3
  import { ContractorPaymentMethod } from '@gusto/embedded-api/models/components/contractorpaymentmethod';
4
- import { ContractorPaymentMethodFormData } from './contractorPaymentMethodSchema';
4
+ import { ContractorPaymentMethodFormData, ContractorPaymentMethodFormType } from './contractorPaymentMethodSchema';
5
5
  import { TypeFieldProps } from './fields';
6
6
  import { BaseFormHookReady, FieldMetadata, HookLoadingResult, HookSubmitResult } from '../../../../../partner-hook-utils/types';
7
7
  /**
@@ -114,5 +114,5 @@ export type UseContractorPaymentMethodFormResult = HookLoadingResult | UseContra
114
114
  *
115
115
  * @public
116
116
  */
117
- export type ContractorPaymentMethodFieldsMetadata = { type: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<"Check" | "Direct Deposit">; };
117
+ export type ContractorPaymentMethodFieldsMetadata = { type: import("../../../../../partner-hook-utils/types").FieldMetadataWithOptions<ContractorPaymentMethodFormType>; };
118
118
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePayment.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePayment.tsx"],"sourcesContent":["import { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentGroupsCreateMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsCreate'\nimport type {\n ContractorPayments,\n PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody,\n SubmissionBlockers,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport DOMPurify from 'dompurify'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTranslation } from 'react-i18next'\nimport type { ContractorPaymentGroupPreview } from '@gusto/embedded-api/models/components/contractorpaymentgrouppreview'\nimport { useBankAccountsGet } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport type { InternalAlert } from '../types'\nimport { CreatePaymentPresentation } from './CreatePaymentPresentation'\nimport { EditContractorPaymentPresentation } from './EditContractorPaymentPresentation'\nimport {\n createEditContractorPaymentFormSchema,\n type EditContractorPaymentFormValues,\n} from './EditContractorPaymentFormSchema'\nimport { PreviewPresentation } from './PreviewPresentation'\nimport { addBusinessDays } from '@/helpers/dateFormatting'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n payrollSubmitHandler,\n type ApiPayrollBlocker,\n} from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\nfunction formatLocalDate(date: Date): string {\n return [\n String(date.getFullYear()).padStart(4, '0'),\n String(date.getMonth() + 1).padStart(2, '0'),\n String(date.getDate()).padStart(2, '0'),\n ].join('-')\n}\n\nfunction calculateInitialPaymentDate(speedDays: number): string {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n return formatLocalDate(addBusinessDays(today, speedDays))\n}\n\n/**\n * Props for {@link CreatePayment}.\n *\n * @public\n */\nexport interface CreatePaymentProps extends BaseComponentInterface<'Contractor.Payments.CreatePayment'> {\n /** UUID of the company for which to create a contractor payment group. */\n companyId: string\n}\n\n/**\n * Form for creating a contractor payment group, including date selection, per-contractor edits, preview, and submission blockers.\n *\n * @remarks\n * Active, fully onboarded contractors are listed for the given company. Hours and bonuses apply to hourly contractors; wages apply to fixed contractors; reimbursements apply to both. The form previews the payment group before final submission and surfaces Fast ACH submission blockers when applicable.\n *\n * Features:\n *\n * - **Payment date selection** — choose the payment date; a notice shows the resulting payment speed.\n * - **Per-contractor editing** — edit hours and bonus (hourly contractors), wage (fixed contractors), and reimbursement (all) in a modal, with a running total.\n * - **Payment method** — choose Check or Direct Deposit per contractor.\n * - **Live totals** — wage, bonus, reimbursement, and overall totals update as amounts change.\n * - **Preview before submit** — review per-contractor amounts, debit amount, debit account, debit date, contractor pay date, and the submission deadline before finalizing.\n * - **Submission blockers** — Fast ACH blockers surface inline with selectable unblock options (wire transfer or slower direct deposit); submission stays disabled until every blocker is resolved.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/payments/edit` | The edit modal was opened for a contractor. | — |\n * | `contractor/payments/update` | A contractor's payment values were updated locally. | The updated form values (hours, wage, bonus, reimbursement, payment method, etc.). |\n * | `contractor/payments/preview` | The preview API call succeeded. | The contractor payment group preview response. |\n * | `contractor/payments/backToEdit` | The user returned from preview to continue editing. | — |\n * | `contractor/payments/created` | The payment group was successfully created. | The created contractor payment group response. |\n * | `contractor/payments/rfi/respond` | The user clicked to respond to a payment blocker. | — |\n *\n * @param props - Component props including the company identifier and event handler.\n * @returns The rendered create-payment form, preview, and edit modal.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * function CreateContractorPayment() {\n * return (\n * <ContractorManagement.CreatePayment\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function CreatePayment(props: CreatePaymentProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.CreatePayment\">\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ companyId, dictionary, onEvent }: CreatePaymentProps) => {\n useComponentDictionary('Contractor.Payments.CreatePayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const [isModalOpen, setIsModalOpen] = useState(false)\n const { baseSubmitHandler } = useBase()\n const [alerts, setAlerts] = useState<Record<string, InternalAlert>>({})\n const [previewData, setPreviewData] = useState<ContractorPaymentGroupPreview | null>(null)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n\n const { mutateAsync: createContractorPaymentGroup, isPending: isCreatingContractorPaymentGroup } =\n useContractorPaymentGroupsCreateMutation()\n const {\n mutateAsync: previewContractorPaymentGroup,\n isPending: isPreviewingContractorPaymentGroup,\n } = useContractorPaymentGroupsPreviewMutation()\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.contractors || []).filter(\n contractor =>\n contractor.isActive &&\n contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED,\n )\n const { data: bankAccounts } = useBankAccountsGet({ companyId })\n const { paymentSpeed, paymentSpeedDays } = useCompanyPaymentSpeed(companyId)\n const bankAccount = bankAccounts?.companyBankAccounts?.[0]\n\n const [paymentDate, setPaymentDate] = useState(calculateInitialPaymentDate(paymentSpeedDays))\n const hasInitializedPaymentDateRef = useRef(false)\n\n useEffect(() => {\n if (paymentSpeed && !hasInitializedPaymentDateRef.current) {\n setPaymentDate(calculateInitialPaymentDate(paymentSpeedDays))\n hasInitializedPaymentDateRef.current = true\n }\n }, [paymentSpeed, paymentSpeedDays])\n\n const initialContractorPayments: (ContractorPayments & { isTouched: boolean })[] = useMemo(\n () =>\n contractors.map(contractor => {\n const paymentMethod = contractor.paymentMethod ? contractor.paymentMethod : 'Direct Deposit'\n\n return {\n contractorUuid: contractor.uuid,\n paymentMethod,\n wage: '0',\n hours: '0',\n bonus: '0',\n reimbursement: '0',\n isTouched: false,\n }\n }),\n [contractors],\n )\n const [virtualContractorPayments, setVirtualContractorPayments] =\n useState(initialContractorPayments)\n const totals = useMemo(\n () =>\n virtualContractorPayments.reduce(\n (acc, payment) => {\n const contractor = contractors.find(c => c.uuid === payment.contractorUuid)\n const isHourly = contractor?.wageType === 'Hourly'\n const hours = Number(payment.hours || '0')\n const wage = Number(payment.wage || '0')\n const bonus = Number(payment.bonus || '0')\n const reimbursement = Number(payment.reimbursement || '0')\n const hourlyAmount = isHourly ? hours * Number(contractor.hourlyRate || '0') : 0\n const fixedWage = isHourly ? 0 : wage\n\n return {\n wage: acc.wage + fixedWage,\n bonus: acc.bonus + bonus,\n reimbursement: acc.reimbursement + reimbursement,\n total: acc.total + hourlyAmount + fixedWage + bonus + reimbursement,\n }\n },\n { wage: 0, bonus: 0, reimbursement: 0, total: 0 },\n ),\n [virtualContractorPayments, contractors],\n )\n\n const formMethods = useForm<EditContractorPaymentFormValues>({\n resolver: zodResolver(createEditContractorPaymentFormSchema()),\n defaultValues: {\n wageType: 'Hourly',\n hours: 0,\n wage: 0,\n bonus: 0,\n reimbursement: 0,\n paymentMethod: 'Direct Deposit',\n hourlyRate: 0,\n contractorUuid: '',\n contractorPaymentMethod: undefined,\n },\n })\n\n const onCreatePaymentGroup = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0 || !previewData?.creationToken) {\n return\n }\n const creationToken = previewData.creationToken\n\n const submissionBlockers: SubmissionBlockers[] = Object.entries(selectedUnblockOptions).map(\n ([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n }),\n )\n\n const requestBody: PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody = {\n checkDate: new RFCDate(paymentDate),\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n creationToken,\n ...(submissionBlockers.length > 0 && { submissionBlockers }),\n }\n\n const response = await createContractorPaymentGroup({\n request: {\n companyId,\n requestBody,\n },\n })\n\n onEvent(componentEvents.CONTRACTOR_PAYMENT_CREATED, response.contractorPaymentGroup || {})\n })\n }\n\n const onUnblockOptionChange = (blockerType: string, value: string) => {\n setSelectedUnblockOptions(prev => ({\n ...prev,\n [blockerType]: value,\n }))\n }\n const onEditContractor = (contractorUuid: string) => {\n const contractor = contractors.find(contractor => contractor.uuid === contractorUuid)\n const contractorPayment = virtualContractorPayments.find(\n payment => payment.contractorUuid === contractorUuid,\n )\n\n const rawPaymentMethod = contractorPayment?.paymentMethod || 'Direct Deposit'\n const sanitizedPaymentMethod = ['Check', 'Direct Deposit'].includes(rawPaymentMethod)\n ? (rawPaymentMethod as 'Check' | 'Direct Deposit')\n : 'Check'\n\n formMethods.reset(\n {\n wageType: contractor?.wageType || 'Hourly',\n hours: Number(contractorPayment?.hours || '0'),\n wage: Number(contractorPayment?.wage || '0'),\n bonus: Number(contractorPayment?.bonus || '0'),\n reimbursement: Number(contractorPayment?.reimbursement || '0'),\n paymentMethod: sanitizedPaymentMethod,\n hourlyRate: Number(contractor?.hourlyRate || '0'),\n contractorUuid: contractorUuid,\n contractorPaymentMethod: contractor?.paymentMethod || undefined,\n },\n { keepDirty: false, keepValues: false },\n )\n setAlerts({})\n setIsModalOpen(true)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_EDIT)\n }\n\n const onEditContractorSubmit = (data: EditContractorPaymentFormValues) => {\n const currentContractor = contractors.find(c => c.uuid === data.contractorUuid)\n const currentContractorPaymentMethod = currentContractor?.paymentMethod\n\n if (!['Check', 'Direct Deposit'].includes(data.paymentMethod)) {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.unsupportedPaymentMethod'),\n })\n return\n }\n\n if (currentContractorPaymentMethod === 'Check' && data.paymentMethod === 'Direct Deposit') {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.directDepositNotAvailable'),\n })\n return\n }\n\n const hasAnyPayment =\n (data.wage ?? 0) > 0 ||\n (data.hours ?? 0) > 0 ||\n (data.bonus ?? 0) > 0 ||\n (data.reimbursement ?? 0) > 0\n\n setVirtualContractorPayments(prevPayments =>\n prevPayments.map(payment =>\n payment.contractorUuid === data.contractorUuid\n ? {\n contractorUuid: payment.contractorUuid,\n wage: String(data.wage ?? 0),\n hours: String(data.hours ?? 0),\n bonus: String(data.bonus ?? 0),\n reimbursement: String(data.reimbursement ?? 0),\n paymentMethod: data.paymentMethod,\n isTouched: hasAnyPayment,\n }\n : payment,\n ),\n )\n const displayContractor = contractors.find(\n contractor => contractor.uuid === data.contractorUuid,\n )\n const displayName = DOMPurify.sanitize(\n displayContractor?.type === 'Individual'\n ? firstLastName({\n first_name: displayContractor.firstName,\n last_name: displayContractor.lastName,\n })\n : displayContractor?.businessName || '',\n )\n setAlerts(prevAlerts => ({\n ...prevAlerts,\n [data.contractorUuid]: {\n type: 'success',\n title: t('alerts.contractorPaymentUpdated', {\n contractorName: displayName,\n interpolation: { escapeValue: false },\n }),\n onDismiss: () => {\n setAlerts(prevAlerts => {\n const { [data.contractorUuid]: _, ...rest } = prevAlerts\n return rest\n })\n },\n },\n }))\n setIsModalOpen(false)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_UPDATE, data)\n }\n\n const onContinueToPreview = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0) {\n setAlerts({\n ...alerts,\n error: {\n type: 'error',\n title: t('alerts.noContractorPayments'),\n },\n })\n return\n }\n setAlerts({})\n setPayrollBlockers([])\n\n const result = await payrollSubmitHandler(async () => {\n const response = await previewContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n checkDate: new RFCDate(paymentDate),\n },\n },\n })\n setPreviewData(response.contractorPaymentGroupPreview || null)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_PREVIEW, response.contractorPaymentGroupPreview)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onBackToEdit = () => {\n setPreviewData(null)\n setPayrollBlockers([])\n setSelectedUnblockOptions({})\n onEvent(componentEvents.CONTRACTOR_PAYMENT_BACK_TO_EDIT)\n }\n const onViewBlockers = () => {\n onEvent(componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND)\n }\n\n return (\n <>\n {previewData && (\n <PreviewPresentation\n contractorPaymentGroup={previewData}\n contractors={contractors}\n onBackToEdit={onBackToEdit}\n onSubmit={onCreatePaymentGroup}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n bankAccount={bankAccount}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={onUnblockOptionChange}\n paymentSpeed={paymentSpeed}\n />\n )}\n {!previewData && (\n <CreatePaymentPresentation\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n paymentDate={paymentDate}\n onPaymentDateChange={setPaymentDate}\n onSaveAndContinue={onContinueToPreview}\n onEditContractor={onEditContractor}\n totals={totals}\n alerts={alerts}\n payrollBlockers={payrollBlockers}\n onViewBlockers={onViewBlockers}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n paymentSpeedDays={paymentSpeedDays}\n />\n )}\n <EditContractorPaymentPresentation\n isOpen={isModalOpen}\n onClose={() => {\n setIsModalOpen(false)\n }}\n formMethods={formMethods}\n onSubmit={onEditContractorSubmit}\n contractorPaymentMethod={\n contractors.find(c => c.uuid === formMethods.getValues('contractorUuid'))\n ?.paymentMethod ?? undefined\n }\n />\n </>\n )\n}\n"],"names":["formatLocalDate","date","calculateInitialPaymentDate","speedDays","today","addBusinessDays","CreatePayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","useComponentDictionary","t","useTranslation","isModalOpen","setIsModalOpen","useState","baseSubmitHandler","useBase","alerts","setAlerts","previewData","setPreviewData","payrollBlockers","setPayrollBlockers","selectedUnblockOptions","setSelectedUnblockOptions","createContractorPaymentGroup","isCreatingContractorPaymentGroup","useContractorPaymentGroupsCreateMutation","previewContractorPaymentGroup","isPreviewingContractorPaymentGroup","useContractorPaymentGroupsPreviewMutation","contractorList","useContractorsListSuspense","contractors","contractor","ContractorOnboardingStatus","bankAccounts","useBankAccountsGet","paymentSpeed","paymentSpeedDays","useCompanyPaymentSpeed","bankAccount","paymentDate","setPaymentDate","hasInitializedPaymentDateRef","useRef","useEffect","initialContractorPayments","useMemo","paymentMethod","virtualContractorPayments","setVirtualContractorPayments","totals","acc","payment","c","isHourly","hours","wage","bonus","reimbursement","hourlyAmount","fixedWage","formMethods","useForm","zodResolver","createEditContractorPaymentFormSchema","jsxs","Fragment","PreviewPresentation","componentEvents","contractorPayments","creationToken","submissionBlockers","blockerType","selectedOption","requestBody","RFCDate","isTouched","rest","response","value","prev","CreatePaymentPresentation","result","payrollSubmitHandler","contractorUuid","contractorPayment","rawPaymentMethod","sanitizedPaymentMethod","EditContractorPaymentPresentation","data","currentContractorPaymentMethod","hasAnyPayment","prevPayments","displayContractor","displayName","DOMPurify","firstLastName","prevAlerts","_"],"mappings":"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"}
1
+ {"version":3,"file":"CreatePayment.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePayment.tsx"],"sourcesContent":["import { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentGroupsCreateMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsCreate'\nimport type {\n PostV1CompaniesCompanyIdContractorPaymentGroupsContractorPayments as ContractorPayments,\n PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody,\n SubmissionBlockers,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport DOMPurify from 'dompurify'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTranslation } from 'react-i18next'\nimport type { ContractorPaymentGroupPreview } from '@gusto/embedded-api/models/components/contractorpaymentgrouppreview'\nimport { useBankAccountsGet } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport type { InternalAlert } from '../types'\nimport { CreatePaymentPresentation } from './CreatePaymentPresentation'\nimport { EditContractorPaymentPresentation } from './EditContractorPaymentPresentation'\nimport {\n createEditContractorPaymentFormSchema,\n type EditContractorPaymentFormValues,\n} from './EditContractorPaymentFormSchema'\nimport { PreviewPresentation } from './PreviewPresentation'\nimport { addBusinessDays } from '@/helpers/dateFormatting'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport {\n payrollSubmitHandler,\n type ApiPayrollBlocker,\n} from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\nfunction formatLocalDate(date: Date): string {\n return [\n String(date.getFullYear()).padStart(4, '0'),\n String(date.getMonth() + 1).padStart(2, '0'),\n String(date.getDate()).padStart(2, '0'),\n ].join('-')\n}\n\nfunction calculateInitialPaymentDate(speedDays: number): string {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n return formatLocalDate(addBusinessDays(today, speedDays))\n}\n\n/**\n * Props for {@link CreatePayment}.\n *\n * @public\n */\nexport interface CreatePaymentProps extends BaseComponentInterface<'Contractor.Payments.CreatePayment'> {\n /** UUID of the company for which to create a contractor payment group. */\n companyId: string\n}\n\n/**\n * Form for creating a contractor payment group, including date selection, per-contractor edits, preview, and submission blockers.\n *\n * @remarks\n * Active, fully onboarded contractors are listed for the given company. Hours and bonuses apply to hourly contractors; wages apply to fixed contractors; reimbursements apply to both. The form previews the payment group before final submission and surfaces Fast ACH submission blockers when applicable.\n *\n * Features:\n *\n * - **Payment date selection** — choose the payment date; a notice shows the resulting payment speed.\n * - **Per-contractor editing** — edit hours and bonus (hourly contractors), wage (fixed contractors), and reimbursement (all) in a modal, with a running total.\n * - **Payment method** — choose Check or Direct Deposit per contractor.\n * - **Live totals** — wage, bonus, reimbursement, and overall totals update as amounts change.\n * - **Preview before submit** — review per-contractor amounts, debit amount, debit account, debit date, contractor pay date, and the submission deadline before finalizing.\n * - **Submission blockers** — Fast ACH blockers surface inline with selectable unblock options (wire transfer or slower direct deposit); submission stays disabled until every blocker is resolved.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `contractor/payments/edit` | The edit modal was opened for a contractor. | — |\n * | `contractor/payments/update` | A contractor's payment values were updated locally. | The updated form values (hours, wage, bonus, reimbursement, payment method, etc.). |\n * | `contractor/payments/preview` | The preview API call succeeded. | The contractor payment group preview response. |\n * | `contractor/payments/backToEdit` | The user returned from preview to continue editing. | — |\n * | `contractor/payments/created` | The payment group was successfully created. | The created contractor payment group response. |\n * | `contractor/payments/rfi/respond` | The user clicked to respond to a payment blocker. | — |\n *\n * @param props - Component props including the company identifier and event handler.\n * @returns The rendered create-payment form, preview, and edit modal.\n * @public\n *\n * @example\n * ```tsx\n * import { ContractorManagement } from '@gusto/embedded-react-sdk'\n *\n * function CreateContractorPayment() {\n * return (\n * <ContractorManagement.CreatePayment\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function CreatePayment(props: CreatePaymentProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.CreatePayment\">\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nconst Root = ({ companyId, dictionary, onEvent }: CreatePaymentProps) => {\n useComponentDictionary('Contractor.Payments.CreatePayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const [isModalOpen, setIsModalOpen] = useState(false)\n const { baseSubmitHandler } = useBase()\n const [alerts, setAlerts] = useState<Record<string, InternalAlert>>({})\n const [previewData, setPreviewData] = useState<ContractorPaymentGroupPreview | null>(null)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n\n const { mutateAsync: createContractorPaymentGroup, isPending: isCreatingContractorPaymentGroup } =\n useContractorPaymentGroupsCreateMutation()\n const {\n mutateAsync: previewContractorPaymentGroup,\n isPending: isPreviewingContractorPaymentGroup,\n } = useContractorPaymentGroupsPreviewMutation()\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.contractors || []).filter(\n contractor =>\n contractor.isActive &&\n contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED,\n )\n const { data: bankAccounts } = useBankAccountsGet({ companyId })\n const { paymentSpeed, paymentSpeedDays } = useCompanyPaymentSpeed(companyId)\n const bankAccount = bankAccounts?.companyBankAccounts?.[0]\n\n const [paymentDate, setPaymentDate] = useState(calculateInitialPaymentDate(paymentSpeedDays))\n const hasInitializedPaymentDateRef = useRef(false)\n\n useEffect(() => {\n if (paymentSpeed && !hasInitializedPaymentDateRef.current) {\n setPaymentDate(calculateInitialPaymentDate(paymentSpeedDays))\n hasInitializedPaymentDateRef.current = true\n }\n }, [paymentSpeed, paymentSpeedDays])\n\n const initialContractorPayments: (ContractorPayments & { isTouched: boolean })[] = useMemo(\n () =>\n contractors.map(contractor => {\n const paymentMethod = contractor.paymentMethod ? contractor.paymentMethod : 'Direct Deposit'\n\n return {\n contractorUuid: contractor.uuid,\n paymentMethod,\n wage: '0',\n hours: '0',\n bonus: '0',\n reimbursement: '0',\n isTouched: false,\n }\n }),\n [contractors],\n )\n const [virtualContractorPayments, setVirtualContractorPayments] =\n useState(initialContractorPayments)\n const totals = useMemo(\n () =>\n virtualContractorPayments.reduce(\n (acc, payment) => {\n const contractor = contractors.find(c => c.uuid === payment.contractorUuid)\n const isHourly = contractor?.wageType === 'Hourly'\n const hours = Number(payment.hours || '0')\n const wage = Number(payment.wage || '0')\n const bonus = Number(payment.bonus || '0')\n const reimbursement = Number(payment.reimbursement || '0')\n const hourlyAmount = isHourly ? hours * Number(contractor.hourlyRate || '0') : 0\n const fixedWage = isHourly ? 0 : wage\n\n return {\n wage: acc.wage + fixedWage,\n bonus: acc.bonus + bonus,\n reimbursement: acc.reimbursement + reimbursement,\n total: acc.total + hourlyAmount + fixedWage + bonus + reimbursement,\n }\n },\n { wage: 0, bonus: 0, reimbursement: 0, total: 0 },\n ),\n [virtualContractorPayments, contractors],\n )\n\n const formMethods = useForm<EditContractorPaymentFormValues>({\n resolver: zodResolver(createEditContractorPaymentFormSchema()),\n defaultValues: {\n wageType: 'Hourly',\n hours: 0,\n wage: 0,\n bonus: 0,\n reimbursement: 0,\n paymentMethod: 'Direct Deposit',\n hourlyRate: 0,\n contractorUuid: '',\n contractorPaymentMethod: undefined,\n },\n })\n\n const onCreatePaymentGroup = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0 || !previewData?.creationToken) {\n return\n }\n const creationToken = previewData.creationToken\n\n const submissionBlockers: SubmissionBlockers[] = Object.entries(selectedUnblockOptions).map(\n ([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n }),\n )\n\n const requestBody: PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody = {\n checkDate: new RFCDate(paymentDate),\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n creationToken,\n ...(submissionBlockers.length > 0 && { submissionBlockers }),\n }\n\n const response = await createContractorPaymentGroup({\n request: {\n companyId,\n requestBody,\n },\n })\n\n onEvent(componentEvents.CONTRACTOR_PAYMENT_CREATED, response.contractorPaymentGroup || {})\n })\n }\n\n const onUnblockOptionChange = (blockerType: string, value: string) => {\n setSelectedUnblockOptions(prev => ({\n ...prev,\n [blockerType]: value,\n }))\n }\n const onEditContractor = (contractorUuid: string) => {\n const contractor = contractors.find(contractor => contractor.uuid === contractorUuid)\n const contractorPayment = virtualContractorPayments.find(\n payment => payment.contractorUuid === contractorUuid,\n )\n\n const rawPaymentMethod = contractorPayment?.paymentMethod || 'Direct Deposit'\n const sanitizedPaymentMethod = ['Check', 'Direct Deposit'].includes(rawPaymentMethod)\n ? (rawPaymentMethod as 'Check' | 'Direct Deposit')\n : 'Check'\n\n formMethods.reset(\n {\n wageType: contractor?.wageType || 'Hourly',\n hours: Number(contractorPayment?.hours || '0'),\n wage: Number(contractorPayment?.wage || '0'),\n bonus: Number(contractorPayment?.bonus || '0'),\n reimbursement: Number(contractorPayment?.reimbursement || '0'),\n paymentMethod: sanitizedPaymentMethod,\n hourlyRate: Number(contractor?.hourlyRate || '0'),\n contractorUuid: contractorUuid,\n contractorPaymentMethod: contractor?.paymentMethod || undefined,\n },\n { keepDirty: false, keepValues: false },\n )\n setAlerts({})\n setIsModalOpen(true)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_EDIT)\n }\n\n const onEditContractorSubmit = (data: EditContractorPaymentFormValues) => {\n const currentContractor = contractors.find(c => c.uuid === data.contractorUuid)\n const currentContractorPaymentMethod = currentContractor?.paymentMethod\n\n if (!['Check', 'Direct Deposit'].includes(data.paymentMethod)) {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.unsupportedPaymentMethod'),\n })\n return\n }\n\n if (currentContractorPaymentMethod === 'Check' && data.paymentMethod === 'Direct Deposit') {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.directDepositNotAvailable'),\n })\n return\n }\n\n const hasAnyPayment =\n (data.wage ?? 0) > 0 ||\n (data.hours ?? 0) > 0 ||\n (data.bonus ?? 0) > 0 ||\n (data.reimbursement ?? 0) > 0\n\n setVirtualContractorPayments(prevPayments =>\n prevPayments.map(payment =>\n payment.contractorUuid === data.contractorUuid\n ? {\n contractorUuid: payment.contractorUuid,\n wage: String(data.wage ?? 0),\n hours: String(data.hours ?? 0),\n bonus: String(data.bonus ?? 0),\n reimbursement: String(data.reimbursement ?? 0),\n paymentMethod: data.paymentMethod,\n isTouched: hasAnyPayment,\n }\n : payment,\n ),\n )\n const displayContractor = contractors.find(\n contractor => contractor.uuid === data.contractorUuid,\n )\n const displayName = DOMPurify.sanitize(\n displayContractor?.type === 'Individual'\n ? firstLastName({\n first_name: displayContractor.firstName,\n last_name: displayContractor.lastName,\n })\n : displayContractor?.businessName || '',\n )\n setAlerts(prevAlerts => ({\n ...prevAlerts,\n [data.contractorUuid]: {\n type: 'success',\n title: t('alerts.contractorPaymentUpdated', {\n contractorName: displayName,\n interpolation: { escapeValue: false },\n }),\n onDismiss: () => {\n setAlerts(prevAlerts => {\n const { [data.contractorUuid]: _, ...rest } = prevAlerts\n return rest\n })\n },\n },\n }))\n setIsModalOpen(false)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_UPDATE, data)\n }\n\n const onContinueToPreview = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0) {\n setAlerts({\n ...alerts,\n error: {\n type: 'error',\n title: t('alerts.noContractorPayments'),\n },\n })\n return\n }\n setAlerts({})\n setPayrollBlockers([])\n\n const result = await payrollSubmitHandler(async () => {\n const response = await previewContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n checkDate: new RFCDate(paymentDate),\n },\n },\n })\n setPreviewData(response.contractorPaymentGroupPreview || null)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_PREVIEW, response.contractorPaymentGroupPreview)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onBackToEdit = () => {\n setPreviewData(null)\n setPayrollBlockers([])\n setSelectedUnblockOptions({})\n onEvent(componentEvents.CONTRACTOR_PAYMENT_BACK_TO_EDIT)\n }\n const onViewBlockers = () => {\n onEvent(componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND)\n }\n\n return (\n <>\n {previewData && (\n <PreviewPresentation\n contractorPaymentGroup={previewData}\n contractors={contractors}\n onBackToEdit={onBackToEdit}\n onSubmit={onCreatePaymentGroup}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n bankAccount={bankAccount}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={onUnblockOptionChange}\n paymentSpeed={paymentSpeed}\n />\n )}\n {!previewData && (\n <CreatePaymentPresentation\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n paymentDate={paymentDate}\n onPaymentDateChange={setPaymentDate}\n onSaveAndContinue={onContinueToPreview}\n onEditContractor={onEditContractor}\n totals={totals}\n alerts={alerts}\n payrollBlockers={payrollBlockers}\n onViewBlockers={onViewBlockers}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n paymentSpeedDays={paymentSpeedDays}\n />\n )}\n <EditContractorPaymentPresentation\n isOpen={isModalOpen}\n onClose={() => {\n setIsModalOpen(false)\n }}\n formMethods={formMethods}\n onSubmit={onEditContractorSubmit}\n contractorPaymentMethod={\n contractors.find(c => c.uuid === formMethods.getValues('contractorUuid'))\n ?.paymentMethod ?? undefined\n }\n />\n </>\n )\n}\n"],"names":["formatLocalDate","date","calculateInitialPaymentDate","speedDays","today","addBusinessDays","CreatePayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","useComponentDictionary","t","useTranslation","isModalOpen","setIsModalOpen","useState","baseSubmitHandler","useBase","alerts","setAlerts","previewData","setPreviewData","payrollBlockers","setPayrollBlockers","selectedUnblockOptions","setSelectedUnblockOptions","createContractorPaymentGroup","isCreatingContractorPaymentGroup","useContractorPaymentGroupsCreateMutation","previewContractorPaymentGroup","isPreviewingContractorPaymentGroup","useContractorPaymentGroupsPreviewMutation","contractorList","useContractorsListSuspense","contractors","contractor","ContractorOnboardingStatus","bankAccounts","useBankAccountsGet","paymentSpeed","paymentSpeedDays","useCompanyPaymentSpeed","bankAccount","paymentDate","setPaymentDate","hasInitializedPaymentDateRef","useRef","useEffect","initialContractorPayments","useMemo","paymentMethod","virtualContractorPayments","setVirtualContractorPayments","totals","acc","payment","c","isHourly","hours","wage","bonus","reimbursement","hourlyAmount","fixedWage","formMethods","useForm","zodResolver","createEditContractorPaymentFormSchema","jsxs","Fragment","PreviewPresentation","componentEvents","contractorPayments","creationToken","submissionBlockers","blockerType","selectedOption","requestBody","RFCDate","isTouched","rest","response","value","prev","CreatePaymentPresentation","result","payrollSubmitHandler","contractorUuid","contractorPayment","rawPaymentMethod","sanitizedPaymentMethod","EditContractorPaymentPresentation","data","currentContractorPaymentMethod","hasAnyPayment","prevPayments","displayContractor","displayName","DOMPurify","firstLastName","prevAlerts","_"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Contractor } from '@gusto/embedded-api/models/components/contractor';
2
- import { ContractorPayments } from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups';
2
+ import { PostV1CompaniesCompanyIdContractorPaymentGroupsContractorPayments as ContractorPayments } from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups';
3
3
  import { InternalAlert } from '../types';
4
4
  import { ApiPayrollBlocker } from '../../../Payroll/PayrollBlocker/payrollHelpers';
5
5
  interface ContractorPaymentCreatePaymentPresentationProps {
@@ -1 +1 @@
1
- {"version":3,"file":"CreatePaymentPresentation.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport type { ContractorPayments } from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useMemo } from 'react'\nimport type { InternalAlert } from '../types'\nimport { getContractorDisplayName } from './helpers'\nimport type { ApiPayrollBlocker } from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '@/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts'\nimport { DataView, Flex, FlexItem, EmptyData } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { useI18n } from '@/i18n'\nimport { formatHoursDisplay } from '@/components/Payroll/helpers'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport {\n formatDateToStringDate,\n normalizeDateToLocal,\n normalizeToDate,\n} from '@/helpers/dateFormatting'\n\nconst ZERO_HOURS_DISPLAY = '0.000'\n\ninterface ContractorPaymentCreatePaymentPresentationProps {\n contractors: Contractor[]\n contractorPayments: (ContractorPayments & { isTouched?: boolean })[]\n paymentDate: string\n onPaymentDateChange: (date: string) => void\n onSaveAndContinue: () => void\n onEditContractor: (contractorUuid: string) => void\n totals: {\n wage: number\n bonus: number\n reimbursement: number\n total: number\n }\n alerts: Record<string, InternalAlert>\n payrollBlockers?: ApiPayrollBlocker[]\n onViewBlockers?: () => void\n isLoading: boolean\n paymentSpeedDays: number\n}\n\n/** @internal */\nexport const CreatePaymentPresentation = ({\n contractors,\n paymentDate,\n contractorPayments,\n onPaymentDateChange,\n onSaveAndContinue,\n onEditContractor,\n totals,\n alerts,\n payrollBlockers = [],\n onViewBlockers,\n isLoading,\n paymentSpeedDays,\n}: ContractorPaymentCreatePaymentPresentationProps) => {\n const { Button, Text, Heading, DatePicker, Alert } = useComponentContext()\n useI18n('Contractor.Payments.CreatePayment')\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const currencyFormatter = useNumberFormatter('currency')\n\n const formatWageType = (contractor?: Contractor) => {\n if (!contractor) return ''\n if (contractor.wageType === 'Hourly' && contractor.hourlyRate) {\n return ` ${currencyFormatter(Number(contractor.hourlyRate || '0'))}${t('perHour')}`\n }\n return contractor.wageType\n }\n\n const tableData = useMemo(\n () =>\n contractorPayments.map(payment => {\n return {\n ...payment,\n contractorDetails: contractors.find(\n contractor => contractor.uuid === payment.contractorUuid,\n ),\n }\n }),\n [contractorPayments, contractors],\n )\n\n return (\n <Flex flexDirection=\"column\" gap={32}>\n <Flex justifyContent=\"flex-end\" gap={16}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('title')}</Heading>\n <Text variant=\"supporting\">\n {t('paymentSpeedNotice', {\n count: paymentSpeedDays,\n })}\n </Text>\n </Flex>\n <FlexItem>\n <Button onClick={onSaveAndContinue} variant=\"primary\" isLoading={isLoading}>\n {t('continueCta')}\n </Button>\n </FlexItem>\n </Flex>\n\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts blockers={payrollBlockers} onViewBlockersClick={onViewBlockers} />\n )}\n\n {Object.values(alerts).map(alert => (\n <Alert\n key={alert.title}\n label={alert.title}\n onDismiss={alert.onDismiss}\n status={alert.type}\n >\n {alert.content ?? null}\n </Alert>\n ))}\n\n <Flex flexDirection=\"column\" gap={8}>\n <DatePicker\n value={paymentDate ? normalizeToDate(paymentDate) : null}\n onChange={date => {\n const normalized = normalizeDateToLocal(date)\n onPaymentDateChange(normalized ? (formatDateToStringDate(normalized) ?? '') : '')\n }}\n label={t('dateLabel')}\n isRequired\n />\n </Flex>\n\n <Flex flexDirection=\"column\" gap={16}>\n <Heading as=\"h3\">{t('hoursAndPaymentsLabel')}</Heading>\n <DataView\n columns={[\n {\n title: t('contractorTableHeaders.contractor'),\n render: paymentData => getContractorDisplayName(paymentData.contractorDetails),\n },\n {\n title: t('contractorTableHeaders.wageType'),\n render: paymentData => formatWageType(paymentData.contractorDetails),\n },\n {\n title: t('contractorTableHeaders.paymentMethod'),\n render: paymentData => paymentData.paymentMethod || t('na'),\n },\n {\n title: t('contractorTableHeaders.hours'),\n justify: 'end',\n render: paymentData => {\n if (paymentData.contractorDetails?.wageType === 'Fixed') return t('na')\n const hours = Number(paymentData.hours || '0')\n return hours ? formatHoursDisplay(hours) : ZERO_HOURS_DISPLAY\n },\n },\n {\n title: t('contractorTableHeaders.wage'),\n justify: 'end',\n render: paymentData => {\n if (paymentData.contractorDetails?.wageType === 'Hourly') return t('na')\n return currencyFormatter(Number(paymentData.wage || '0'))\n },\n },\n {\n title: t('contractorTableHeaders.bonus'),\n justify: 'end',\n render: paymentData => currencyFormatter(Number(paymentData.bonus || '0')),\n },\n {\n title: t('contractorTableHeaders.reimbursement'),\n justify: 'end',\n render: paymentData => currencyFormatter(Number(paymentData.reimbursement || '0')),\n },\n {\n title: t('contractorTableHeaders.total'),\n justify: 'end',\n render: ({ bonus, reimbursement, wage, hours, contractorDetails }) => {\n const totalAmount =\n Number(bonus || '0') +\n Number(reimbursement || '0') +\n Number(wage || '0') +\n (contractorDetails?.wageType === 'Hourly' && hours\n ? Number(hours || '0') * Number(contractorDetails.hourlyRate || '0')\n : 0)\n return currencyFormatter(totalAmount)\n },\n },\n ]}\n data={tableData}\n footer={\n tableData.length > 0\n ? () => ({\n 'column-0': t('totalsLabel'),\n 'column-4': currencyFormatter(totals.wage),\n 'column-5': currencyFormatter(totals.bonus),\n 'column-6': currencyFormatter(totals.reimbursement),\n 'column-7': currencyFormatter(totals.total),\n })\n : undefined\n }\n label={t('hoursAndPaymentsLabel')}\n itemMenu={paymentData => (\n <HamburgerMenu\n items={[\n {\n label: t('editContractor'),\n onClick: () => {\n onEditContractor(paymentData.contractorUuid!)\n },\n },\n ]}\n triggerLabel={t('editContractor')}\n />\n )}\n emptyState={() => (\n <EmptyData title={t('emptyTableTitle')} description={t('emptyTableDescription')} />\n )}\n />\n </Flex>\n </Flex>\n )\n}\n"],"names":["ZERO_HOURS_DISPLAY","CreatePaymentPresentation","contractors","paymentDate","contractorPayments","onPaymentDateChange","onSaveAndContinue","onEditContractor","totals","alerts","payrollBlockers","onViewBlockers","isLoading","paymentSpeedDays","Button","Text","Heading","DatePicker","Alert","useComponentContext","useI18n","t","useTranslation","currencyFormatter","useNumberFormatter","formatWageType","contractor","tableData","useMemo","payment","jsxs","Flex","jsx","FlexItem","PayrollBlockerAlerts","alert","normalizeToDate","date","normalized","normalizeDateToLocal","formatDateToStringDate","DataView","paymentData","getContractorDisplayName","hours","formatHoursDisplay","bonus","reimbursement","wage","contractorDetails","totalAmount","HamburgerMenu","EmptyData"],"mappings":";;;;;;;;;;;;;;AAoBA,MAAMA,IAAqB,SAuBdC,KAA4B,CAAC;AAAA,EACxC,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,iBAAAC,IAAkB,CAAA;AAAA,EAClB,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,kBAAAC;AACF,MAAuD;AACrD,QAAM,EAAE,QAAAC,GAAQ,MAAAC,GAAM,SAAAC,GAAS,YAAAC,GAAY,OAAAC,EAAA,IAAUC,EAAA;AACrD,EAAAC,EAAQ,mCAAmC;AAC3C,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,mCAAmC,GAC1DC,IAAoBC,EAAmB,UAAU,GAEjDC,IAAiB,CAACC,MACjBA,IACDA,EAAW,aAAa,YAAYA,EAAW,aAC1C,IAAIH,EAAkB,OAAOG,EAAW,cAAc,GAAG,CAAC,CAAC,GAAGL,EAAE,SAAS,CAAC,KAE5EK,EAAW,WAJM,IAOpBC,IAAYC;AAAA,IAChB,MACExB,EAAmB,IAAI,CAAAyB,OACd;AAAA,MACL,GAAGA;AAAA,MACH,mBAAmB3B,EAAY;AAAA,QAC7B,CAAAwB,MAAcA,EAAW,SAASG,EAAQ;AAAA,MAAA;AAAA,IAC5C,EAEH;AAAA,IACH,CAACzB,GAAoBF,CAAW;AAAA,EAAA;AAGlC,SACE,gBAAA4B,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,IAAA,gBAAAD,EAACC,GAAA,EAAK,gBAAe,YAAW,KAAK,IACnC,UAAA;AAAA,MAAA,gBAAAD,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA;AAAA,QAAA,gBAAAC,EAAChB,GAAA,EAAQ,IAAG,MAAM,UAAAK,EAAE,OAAO,GAAE;AAAA,QAC7B,gBAAAW,EAACjB,GAAA,EAAK,SAAQ,cACX,YAAE,sBAAsB;AAAA,UACvB,OAAOF;AAAA,QAAA,CACR,EAAA,CACH;AAAA,MAAA,GACF;AAAA,MACA,gBAAAmB,EAACC,GAAA,EACC,UAAA,gBAAAD,EAAClB,GAAA,EAAO,SAASR,GAAmB,SAAQ,WAAU,WAAAM,GACnD,UAAAS,EAAE,aAAa,EAAA,CAClB,EAAA,CACF;AAAA,IAAA,GACF;AAAA,IAECX,EAAgB,SAAS,KACxB,gBAAAsB,EAACE,KAAqB,UAAUxB,GAAiB,qBAAqBC,GAAgB;AAAA,IAGvF,OAAO,OAAOF,CAAM,EAAE,IAAI,CAAA0B,MACzB,gBAAAH;AAAA,MAACd;AAAA,MAAA;AAAA,QAEC,OAAOiB,EAAM;AAAA,QACb,WAAWA,EAAM;AAAA,QACjB,QAAQA,EAAM;AAAA,QAEb,YAAM,WAAW;AAAA,MAAA;AAAA,MALbA,EAAM;AAAA,IAAA,CAOd;AAAA,IAED,gBAAAH,EAACD,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA,gBAAAC;AAAA,MAACf;AAAA,MAAA;AAAA,QACC,OAAOd,IAAciC,EAAgBjC,CAAW,IAAI;AAAA,QACpD,UAAU,CAAAkC,MAAQ;AAChB,gBAAMC,IAAaC,EAAqBF,CAAI;AAC5C,UAAAhC,EAAoBiC,IAAcE,EAAuBF,CAAU,KAAK,KAAM,EAAE;AAAA,QAClF;AAAA,QACA,OAAOjB,EAAE,WAAW;AAAA,QACpB,YAAU;AAAA,MAAA;AAAA,IAAA,GAEd;AAAA,IAEA,gBAAAS,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,MAAA,gBAAAC,EAAChB,GAAA,EAAQ,IAAG,MAAM,UAAAK,EAAE,uBAAuB,GAAE;AAAA,MAC7C,gBAAAW;AAAA,QAACS;AAAA,QAAA;AAAA,UACC,SAAS;AAAA,YACP;AAAA,cACE,OAAOpB,EAAE,mCAAmC;AAAA,cAC5C,QAAQ,CAAAqB,MAAeC,EAAyBD,EAAY,iBAAiB;AAAA,YAAA;AAAA,YAE/E;AAAA,cACE,OAAOrB,EAAE,iCAAiC;AAAA,cAC1C,QAAQ,CAAAqB,MAAejB,EAAeiB,EAAY,iBAAiB;AAAA,YAAA;AAAA,YAErE;AAAA,cACE,OAAOrB,EAAE,sCAAsC;AAAA,cAC/C,QAAQ,CAAAqB,MAAeA,EAAY,iBAAiBrB,EAAE,IAAI;AAAA,YAAA;AAAA,YAE5D;AAAA,cACE,OAAOA,EAAE,8BAA8B;AAAA,cACvC,SAAS;AAAA,cACT,QAAQ,CAAAqB,MAAe;AACrB,oBAAIA,EAAY,mBAAmB,aAAa,QAAS,QAAOrB,EAAE,IAAI;AACtE,sBAAMuB,IAAQ,OAAOF,EAAY,SAAS,GAAG;AAC7C,uBAAOE,IAAQC,EAAmBD,CAAK,IAAI5C;AAAA,cAC7C;AAAA,YAAA;AAAA,YAEF;AAAA,cACE,OAAOqB,EAAE,6BAA6B;AAAA,cACtC,SAAS;AAAA,cACT,QAAQ,CAAAqB,MACFA,EAAY,mBAAmB,aAAa,WAAiBrB,EAAE,IAAI,IAChEE,EAAkB,OAAOmB,EAAY,QAAQ,GAAG,CAAC;AAAA,YAC1D;AAAA,YAEF;AAAA,cACE,OAAOrB,EAAE,8BAA8B;AAAA,cACvC,SAAS;AAAA,cACT,QAAQ,CAAAqB,MAAenB,EAAkB,OAAOmB,EAAY,SAAS,GAAG,CAAC;AAAA,YAAA;AAAA,YAE3E;AAAA,cACE,OAAOrB,EAAE,sCAAsC;AAAA,cAC/C,SAAS;AAAA,cACT,QAAQ,CAAAqB,MAAenB,EAAkB,OAAOmB,EAAY,iBAAiB,GAAG,CAAC;AAAA,YAAA;AAAA,YAEnF;AAAA,cACE,OAAOrB,EAAE,8BAA8B;AAAA,cACvC,SAAS;AAAA,cACT,QAAQ,CAAC,EAAE,OAAAyB,GAAO,eAAAC,GAAe,MAAAC,GAAM,OAAAJ,GAAO,mBAAAK,QAAwB;AACpE,sBAAMC,IACJ,OAAOJ,KAAS,GAAG,IACnB,OAAOC,KAAiB,GAAG,IAC3B,OAAOC,KAAQ,GAAG,KACjBC,GAAmB,aAAa,YAAYL,IACzC,OAAOA,KAAS,GAAG,IAAI,OAAOK,EAAkB,cAAc,GAAG,IACjE;AACN,uBAAO1B,EAAkB2B,CAAW;AAAA,cACtC;AAAA,YAAA;AAAA,UACF;AAAA,UAEF,MAAMvB;AAAA,UACN,QACEA,EAAU,SAAS,IACf,OAAO;AAAA,YACL,YAAYN,EAAE,aAAa;AAAA,YAC3B,YAAYE,EAAkBf,EAAO,IAAI;AAAA,YACzC,YAAYe,EAAkBf,EAAO,KAAK;AAAA,YAC1C,YAAYe,EAAkBf,EAAO,aAAa;AAAA,YAClD,YAAYe,EAAkBf,EAAO,KAAK;AAAA,UAAA,KAE5C;AAAA,UAEN,OAAOa,EAAE,uBAAuB;AAAA,UAChC,UAAU,CAAAqB,MACR,gBAAAV;AAAA,YAACmB;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL;AAAA,kBACE,OAAO9B,EAAE,gBAAgB;AAAA,kBACzB,SAAS,MAAM;AACb,oBAAAd,EAAiBmC,EAAY,cAAe;AAAA,kBAC9C;AAAA,gBAAA;AAAA,cACF;AAAA,cAEF,cAAcrB,EAAE,gBAAgB;AAAA,YAAA;AAAA,UAAA;AAAA,UAGpC,YAAY,MACV,gBAAAW,EAACoB,GAAA,EAAU,OAAO/B,EAAE,iBAAiB,GAAG,aAAaA,EAAE,uBAAuB,EAAA,CAAG;AAAA,QAAA;AAAA,MAAA;AAAA,IAErF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"CreatePaymentPresentation.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { Contractor } from '@gusto/embedded-api/models/components/contractor'\nimport type { PostV1CompaniesCompanyIdContractorPaymentGroupsContractorPayments as ContractorPayments } from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useMemo } from 'react'\nimport type { InternalAlert } from '../types'\nimport { getContractorDisplayName } from './helpers'\nimport type { ApiPayrollBlocker } from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '@/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts'\nimport { DataView, Flex, FlexItem, EmptyData } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { useI18n } from '@/i18n'\nimport { formatHoursDisplay } from '@/components/Payroll/helpers'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport {\n formatDateToStringDate,\n normalizeDateToLocal,\n normalizeToDate,\n} from '@/helpers/dateFormatting'\n\nconst ZERO_HOURS_DISPLAY = '0.000'\n\ninterface ContractorPaymentCreatePaymentPresentationProps {\n contractors: Contractor[]\n contractorPayments: (ContractorPayments & { isTouched?: boolean })[]\n paymentDate: string\n onPaymentDateChange: (date: string) => void\n onSaveAndContinue: () => void\n onEditContractor: (contractorUuid: string) => void\n totals: {\n wage: number\n bonus: number\n reimbursement: number\n total: number\n }\n alerts: Record<string, InternalAlert>\n payrollBlockers?: ApiPayrollBlocker[]\n onViewBlockers?: () => void\n isLoading: boolean\n paymentSpeedDays: number\n}\n\n/** @internal */\nexport const CreatePaymentPresentation = ({\n contractors,\n paymentDate,\n contractorPayments,\n onPaymentDateChange,\n onSaveAndContinue,\n onEditContractor,\n totals,\n alerts,\n payrollBlockers = [],\n onViewBlockers,\n isLoading,\n paymentSpeedDays,\n}: ContractorPaymentCreatePaymentPresentationProps) => {\n const { Button, Text, Heading, DatePicker, Alert } = useComponentContext()\n useI18n('Contractor.Payments.CreatePayment')\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const currencyFormatter = useNumberFormatter('currency')\n\n const formatWageType = (contractor?: Contractor) => {\n if (!contractor) return ''\n if (contractor.wageType === 'Hourly' && contractor.hourlyRate) {\n return ` ${currencyFormatter(Number(contractor.hourlyRate || '0'))}${t('perHour')}`\n }\n return contractor.wageType\n }\n\n const tableData = useMemo(\n () =>\n contractorPayments.map(payment => {\n return {\n ...payment,\n contractorDetails: contractors.find(\n contractor => contractor.uuid === payment.contractorUuid,\n ),\n }\n }),\n [contractorPayments, contractors],\n )\n\n return (\n <Flex flexDirection=\"column\" gap={32}>\n <Flex justifyContent=\"flex-end\" gap={16}>\n <Flex flexDirection=\"column\" gap={4}>\n <Heading as=\"h2\">{t('title')}</Heading>\n <Text variant=\"supporting\">\n {t('paymentSpeedNotice', {\n count: paymentSpeedDays,\n })}\n </Text>\n </Flex>\n <FlexItem>\n <Button onClick={onSaveAndContinue} variant=\"primary\" isLoading={isLoading}>\n {t('continueCta')}\n </Button>\n </FlexItem>\n </Flex>\n\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts blockers={payrollBlockers} onViewBlockersClick={onViewBlockers} />\n )}\n\n {Object.values(alerts).map(alert => (\n <Alert\n key={alert.title}\n label={alert.title}\n onDismiss={alert.onDismiss}\n status={alert.type}\n >\n {alert.content ?? null}\n </Alert>\n ))}\n\n <Flex flexDirection=\"column\" gap={8}>\n <DatePicker\n value={paymentDate ? normalizeToDate(paymentDate) : null}\n onChange={date => {\n const normalized = normalizeDateToLocal(date)\n onPaymentDateChange(normalized ? (formatDateToStringDate(normalized) ?? '') : '')\n }}\n label={t('dateLabel')}\n isRequired\n />\n </Flex>\n\n <Flex flexDirection=\"column\" gap={16}>\n <Heading as=\"h3\">{t('hoursAndPaymentsLabel')}</Heading>\n <DataView\n columns={[\n {\n title: t('contractorTableHeaders.contractor'),\n render: paymentData => getContractorDisplayName(paymentData.contractorDetails),\n },\n {\n title: t('contractorTableHeaders.wageType'),\n render: paymentData => formatWageType(paymentData.contractorDetails),\n },\n {\n title: t('contractorTableHeaders.paymentMethod'),\n render: paymentData => paymentData.paymentMethod || t('na'),\n },\n {\n title: t('contractorTableHeaders.hours'),\n justify: 'end',\n render: paymentData => {\n if (paymentData.contractorDetails?.wageType === 'Fixed') return t('na')\n const hours = Number(paymentData.hours || '0')\n return hours ? formatHoursDisplay(hours) : ZERO_HOURS_DISPLAY\n },\n },\n {\n title: t('contractorTableHeaders.wage'),\n justify: 'end',\n render: paymentData => {\n if (paymentData.contractorDetails?.wageType === 'Hourly') return t('na')\n return currencyFormatter(Number(paymentData.wage || '0'))\n },\n },\n {\n title: t('contractorTableHeaders.bonus'),\n justify: 'end',\n render: paymentData => currencyFormatter(Number(paymentData.bonus || '0')),\n },\n {\n title: t('contractorTableHeaders.reimbursement'),\n justify: 'end',\n render: paymentData => currencyFormatter(Number(paymentData.reimbursement || '0')),\n },\n {\n title: t('contractorTableHeaders.total'),\n justify: 'end',\n render: ({ bonus, reimbursement, wage, hours, contractorDetails }) => {\n const totalAmount =\n Number(bonus || '0') +\n Number(reimbursement || '0') +\n Number(wage || '0') +\n (contractorDetails?.wageType === 'Hourly' && hours\n ? Number(hours || '0') * Number(contractorDetails.hourlyRate || '0')\n : 0)\n return currencyFormatter(totalAmount)\n },\n },\n ]}\n data={tableData}\n footer={\n tableData.length > 0\n ? () => ({\n 'column-0': t('totalsLabel'),\n 'column-4': currencyFormatter(totals.wage),\n 'column-5': currencyFormatter(totals.bonus),\n 'column-6': currencyFormatter(totals.reimbursement),\n 'column-7': currencyFormatter(totals.total),\n })\n : undefined\n }\n label={t('hoursAndPaymentsLabel')}\n itemMenu={paymentData => (\n <HamburgerMenu\n items={[\n {\n label: t('editContractor'),\n onClick: () => {\n onEditContractor(paymentData.contractorUuid!)\n },\n },\n ]}\n triggerLabel={t('editContractor')}\n />\n )}\n emptyState={() => (\n <EmptyData title={t('emptyTableTitle')} description={t('emptyTableDescription')} />\n )}\n />\n </Flex>\n </Flex>\n )\n}\n"],"names":["ZERO_HOURS_DISPLAY","CreatePaymentPresentation","contractors","paymentDate","contractorPayments","onPaymentDateChange","onSaveAndContinue","onEditContractor","totals","alerts","payrollBlockers","onViewBlockers","isLoading","paymentSpeedDays","Button","Text","Heading","DatePicker","Alert","useComponentContext","useI18n","t","useTranslation","currencyFormatter","useNumberFormatter","formatWageType","contractor","tableData","useMemo","payment","jsxs","Flex","jsx","FlexItem","PayrollBlockerAlerts","alert","normalizeToDate","date","normalized","normalizeDateToLocal","formatDateToStringDate","DataView","paymentData","getContractorDisplayName","hours","formatHoursDisplay","bonus","reimbursement","wage","contractorDetails","totalAmount","HamburgerMenu","EmptyData"],"mappings":"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"}