@gusto/embedded-react-sdk 0.56.4 → 0.56.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/components/Common/DocumentEmbed/DocumentEmbed.js +18 -0
  3. package/dist/components/Common/DocumentEmbed/DocumentEmbed.js.map +1 -0
  4. package/dist/components/Common/DocumentViewer/DocumentViewer.js +35 -29
  5. package/dist/components/Common/DocumentViewer/DocumentViewer.js.map +1 -1
  6. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -3
  7. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  8. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -3
  9. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  10. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -5
  11. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  12. package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -3
  13. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  14. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  15. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  16. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +6 -5
  17. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  18. package/dist/components/Company/Industry/Context.js +7 -6
  19. package/dist/components/Company/Industry/Context.js.map +1 -1
  20. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -3
  21. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  22. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -3
  23. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  24. package/dist/components/Company/OnboardingOverview/context.js +4 -3
  25. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  26. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js +39 -0
  27. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js.map +1 -0
  28. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialogPresentation.js +54 -0
  29. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialogPresentation.js.map +1 -0
  30. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js +56 -0
  31. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js.map +1 -0
  32. package/dist/components/Company/PaySchedule/management/PaySchedule.js +54 -39
  33. package/dist/components/Company/PaySchedule/management/PaySchedule.js.map +1 -1
  34. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js +48 -32
  35. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -1
  36. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +8 -8
  37. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -1
  38. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js +74 -32
  39. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -1
  40. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +4 -3
  41. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  42. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -3
  43. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  44. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +4 -3
  45. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  46. package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js +64 -61
  47. package/dist/components/Contractor/ContractorList/management/ManagementContractorList.js.map +1 -1
  48. package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js +133 -134
  49. package/dist/components/Contractor/ContractorList/management/ManagementContractorListView.js.map +1 -1
  50. package/dist/components/Contractor/ContractorListFlow/ContractorListFlow.js.map +1 -1
  51. package/dist/components/Contractor/ContractorListFlow/ContractorListFlowComponents.js +22 -9
  52. package/dist/components/Contractor/ContractorListFlow/ContractorListFlowComponents.js.map +1 -1
  53. package/dist/components/Contractor/ContractorListFlow/contractorListStateMachine.js +51 -20
  54. package/dist/components/Contractor/ContractorListFlow/contractorListStateMachine.js.map +1 -1
  55. package/dist/components/Contractor/Dismissal/Dismissal.js +77 -0
  56. package/dist/components/Contractor/Dismissal/Dismissal.js.map +1 -0
  57. package/dist/components/Contractor/Dismissal/DismissalPresentation.js +57 -0
  58. package/dist/components/Contractor/Dismissal/DismissalPresentation.js.map +1 -0
  59. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js +44 -0
  60. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js.map +1 -0
  61. package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js +17 -14
  62. package/dist/components/Contractor/Payments/PaymentFlow/paymentStateMachine.js.map +1 -1
  63. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js +45 -41
  64. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatementPresentation.js.map +1 -1
  65. package/dist/components/Contractor/exports/contractorManagement.js +56 -54
  66. package/dist/components/Contractor/exports/contractorManagement.js.map +1 -1
  67. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  68. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  69. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js +27 -16
  70. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlow.js.map +1 -1
  71. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js +25 -17
  72. package/dist/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.js.map +1 -1
  73. package/dist/components/Payroll/ConfirmWireDetails/confirmWireDetailsStateMachine.js +6 -5
  74. package/dist/components/Payroll/ConfirmWireDetails/confirmWireDetailsStateMachine.js.map +1 -1
  75. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +3 -2
  76. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  77. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +201 -196
  78. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  79. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +55 -52
  80. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
  81. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js +38 -29
  82. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js.map +1 -1
  83. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js +63 -62
  84. package/dist/components/Payroll/PayrollExecutionFlow/payrollExecutionMachine.js.map +1 -1
  85. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js +25 -18
  86. package/dist/components/Payroll/PayrollFlow/payrollStateMachine.js.map +1 -1
  87. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js +72 -68
  88. package/dist/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.js.map +1 -1
  89. package/dist/components/Payroll/usePreparedPayrollData.js +3 -2
  90. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  91. package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
  92. package/dist/i18n/I18n.js +2 -0
  93. package/dist/i18n/I18n.js.map +1 -1
  94. package/dist/i18n/en/Company.Management.AutoPilotDialog.json.js +22 -0
  95. package/dist/i18n/en/Company.Management.AutoPilotDialog.json.js.map +1 -0
  96. package/dist/i18n/en/Contractor.Dismissal.json.js +20 -0
  97. package/dist/i18n/en/Contractor.Dismissal.json.js.map +1 -0
  98. package/dist/i18n/en/Contractor.Payments.PaymentStatement.json.js +2 -2
  99. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +38 -38
  100. package/dist/i18n/en/Payroll.UNSTABLE_PayrollEditEmployee.json.js +31 -31
  101. package/dist/i18n/en/common.json.js +37 -35
  102. package/dist/i18n/en/common.json.js.map +1 -1
  103. package/dist/package.json.js +1 -1
  104. package/dist/shared/constants.js +19 -15
  105. package/dist/shared/constants.js.map +1 -1
  106. package/dist/src/components/Common/DocumentEmbed/DocumentEmbed.d.ts +3 -0
  107. package/dist/src/components/Common/DocumentEmbed/DocumentEmbedTypes.d.ts +25 -0
  108. package/dist/src/components/Common/DocumentEmbed/index.d.ts +2 -0
  109. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.d.ts +11 -0
  110. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialogPresentation.d.ts +17 -0
  111. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/index.d.ts +1 -0
  112. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.d.ts +22 -0
  113. package/dist/src/components/Company/PaySchedule/management/PaySchedule.d.ts +17 -1
  114. package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +2 -0
  115. package/dist/src/components/Company/PaySchedule/management/index.d.ts +1 -1
  116. package/dist/src/components/Company/exports/companyManagement.d.ts +1 -1
  117. package/dist/src/components/Contractor/ContractorList/management/ManagementContractorList.d.ts +2 -0
  118. package/dist/src/components/Contractor/ContractorList/management/ManagementContractorListView.d.ts +3 -1
  119. package/dist/src/components/Contractor/ContractorListFlow/ContractorListFlow.d.ts +6 -4
  120. package/dist/src/components/Contractor/ContractorListFlow/ContractorListFlowComponents.d.ts +2 -0
  121. package/dist/src/components/Contractor/ContractorListFlow/contractorListStateMachine.d.ts +1 -0
  122. package/dist/src/components/Contractor/ContractorListFlow/contractorListStateMachine.test.d.ts +1 -0
  123. package/dist/src/components/Contractor/Dismissal/Dismissal.d.ts +45 -0
  124. package/dist/src/components/Contractor/Dismissal/DismissalPresentation.d.ts +17 -0
  125. package/dist/src/components/Contractor/Dismissal/useDismissal/useDismissal.d.ts +41 -0
  126. package/dist/src/components/Contractor/Dismissal/useDismissal/useDismissal.test.d.ts +1 -0
  127. package/dist/src/components/Contractor/exports/contractorManagement.d.ts +1 -0
  128. package/dist/src/components/Employee/EmployeeListFlow/EmployeeListFlow.d.ts +1 -1
  129. package/dist/src/components/Employee/EmployeeListFlow/EmployeeListFlowComponents.d.ts +6 -0
  130. package/dist/src/components/Payroll/ConfirmWireDetails/confirmWireDetailsStateMachine.test.d.ts +1 -0
  131. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.d.ts +19 -0
  132. package/dist/src/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -0
  133. package/dist/src/contexts/ComponentAdapter/useComponentContext.d.ts +5 -2
  134. package/dist/src/i18n/en/common.json.d.ts +3 -0
  135. package/dist/src/i18n/types.d.ts +128 -0
  136. package/dist/src/shared/constants.d.ts +8 -0
  137. package/docs/guides/endpoint-inventory.json +30 -1
  138. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"payrollStateMachine.js","sources":["../../../../src/components/Payroll/PayrollFlow/payrollStateMachine.ts"],"sourcesContent":["import { state, transition, reduce, guard } from 'robot3'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayrollExecutionInitialState } from '../PayrollExecutionFlow'\nimport {\n PayrollLandingContextual,\n PayrollBlockerContextual,\n PayrollOverviewContextual,\n PayrollReceiptsContextual,\n type PayrollFlowContextInterface,\n} from './PayrollFlowComponents'\nimport { PayrollExecutionFlowContextual } from './PayrollExecutionFlowContextual'\nimport { TransitionFlowContextual } from './TransitionFlowContextual'\nimport { OffCycleFlowContextual } from './OffCycleFlowContextual'\nimport { componentEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport { patchBreadcrumbsHeader, updateBreadcrumbs } from '@/helpers/breadcrumbHelpers'\nimport type { BreadcrumbNodes } from '@/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes'\nimport { createBreadcrumbNavigateTransition } from '@/components/Common/FlowBreadcrumbs/breadcrumbTransitionHelpers'\n\ntype PayrollFlowEventPayloads = {\n [componentEvents.RUN_PAYROLL_SELECTED]: {\n payrollUuid: string\n }\n [componentEvents.REVIEW_PAYROLL]: {\n payrollUuid: string\n }\n [componentEvents.RUN_PAYROLL_PROCESSED]: {\n payPeriod?: PayrollPayPeriodType\n payrollUuid?: string\n }\n [componentEvents.RUN_TRANSITION_PAYROLL]: {\n startDate: string\n endDate: string\n payScheduleUuid: string\n }\n}\n\n/** @internal */\nexport const payrollFlowBreadcrumbsNodes: BreadcrumbNodes = {\n landing: {\n parent: null,\n item: {\n id: 'landing',\n label: 'breadcrumbs.landing',\n namespace: 'Payroll.PayrollLanding',\n onNavigate: ((ctx: PayrollFlowContextInterface) => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PayrollLandingContextual,\n payrollUuid: undefined,\n executionInitialState: undefined,\n })) as (context: unknown) => unknown,\n },\n },\n blockers: {\n parent: 'landing',\n item: {\n id: 'blockers',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollBlocker',\n },\n },\n submittedOverview: {\n parent: 'landing',\n item: {\n id: 'submittedOverview',\n label: 'breadcrumbs.overview',\n namespace: 'Payroll.PayrollLanding',\n },\n },\n submittedReceipts: {\n parent: 'landing',\n item: {\n id: 'submittedReceipts',\n label: 'breadcrumbs.receipt',\n namespace: 'Payroll.PayrollLanding',\n },\n },\n}\n\nconst breadcrumbNavigateTransition =\n createBreadcrumbNavigateTransition<PayrollFlowContextInterface>()\n\nfunction toLandingReducer(ctx: PayrollFlowContextInterface): PayrollFlowContextInterface {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PayrollLandingContextual,\n payrollUuid: undefined,\n payPeriod: undefined,\n executionInitialState: undefined,\n }\n}\n\nfunction toExecutionReducer(\n ctx: PayrollFlowContextInterface,\n ev: { payload: { payrollUuid: string } },\n executionInitialState: PayrollExecutionInitialState,\n): PayrollFlowContextInterface {\n return {\n ...ctx,\n component: PayrollExecutionFlowContextual,\n payrollUuid: ev.payload.payrollUuid,\n showPayrollCancelledAlert: false,\n executionInitialState,\n }\n}\n\nconst landingBreadcrumbNavigateTransition = transition(\n componentEvents.BREADCRUMB_NAVIGATE,\n 'landing',\n guard(\n (_ctx: PayrollFlowContextInterface, ev: { payload: { key: string } }) =>\n ev.payload.key === 'landing',\n ),\n reduce(toLandingReducer),\n)\n\nconst exitFlowTransition = transition(\n componentEvents.PAYROLL_EXIT_FLOW,\n 'landing',\n reduce(toLandingReducer),\n)\n\nconst cancelledToLandingTransition = transition(\n componentEvents.RUN_PAYROLL_CANCELLED,\n 'landing',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...toLandingReducer(ctx),\n showPayrollCancelledAlert: true,\n })),\n)\n\nconst processedToSubmittedOverviewTransition = transition(\n componentEvents.RUN_PAYROLL_PROCESSED,\n 'submittedOverview',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollFlowEventPayloads, typeof componentEvents.RUN_PAYROLL_PROCESSED>,\n ): PayrollFlowContextInterface => {\n const payPeriod = ev.payload.payPeriod ?? ctx.payPeriod\n return {\n ...updateBreadcrumbs('submittedOverview', ctx, {\n startDate: payPeriod?.startDate ?? '',\n endDate: payPeriod?.endDate ?? '',\n }),\n component: PayrollOverviewContextual,\n payrollUuid: ev.payload.payrollUuid ?? ctx.payrollUuid,\n payPeriod,\n executionInitialState: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollOverview',\n },\n }\n },\n ),\n)\n\n/** @internal */\nexport const payrollFlowMachine = {\n landing: state<MachineTransition>(\n transition(\n componentEvents.RUN_PAYROLL_SELECTED,\n 'execution',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<\n PayrollFlowEventPayloads,\n typeof componentEvents.RUN_PAYROLL_SELECTED\n >,\n ) => toExecutionReducer(ctx, ev, 'configuration'),\n ),\n ),\n transition(\n componentEvents.REVIEW_PAYROLL,\n 'execution',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollFlowEventPayloads, typeof componentEvents.REVIEW_PAYROLL>,\n ) => toExecutionReducer(ctx, ev, 'overview'),\n ),\n ),\n transition(\n componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL,\n 'blockers',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...updateBreadcrumbs('blockers', ctx),\n component: PayrollBlockerContextual,\n showPayrollCancelledAlert: false,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollBlocker',\n },\n })),\n ),\n transition(\n componentEvents.RUN_PAYROLL_CANCELLED_ALERT_DISMISSED,\n 'landing',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...ctx,\n showPayrollCancelledAlert: false,\n })),\n ),\n transition(\n componentEvents.RUN_TRANSITION_PAYROLL,\n 'transition',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<\n PayrollFlowEventPayloads,\n typeof componentEvents.RUN_TRANSITION_PAYROLL\n >,\n ): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: TransitionFlowContextual,\n transitionStartDate: ev.payload.startDate,\n transitionEndDate: ev.payload.endDate,\n transitionPayScheduleUuid: ev.payload.payScheduleUuid,\n showPayrollCancelledAlert: false,\n }),\n ),\n ),\n transition(\n componentEvents.RUN_OFF_CYCLE_PAYROLL,\n 'offCycle',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: OffCycleFlowContextual,\n showPayrollCancelledAlert: false,\n })),\n ),\n ),\n execution: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n blockers: state<MachineTransition>(breadcrumbNavigateTransition('landing'), exitFlowTransition),\n submittedOverview: state<MachineTransition>(\n breadcrumbNavigateTransition('landing'),\n transition(\n componentEvents.RUN_PAYROLL_RECEIPT_GET,\n 'submittedReceipts',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...updateBreadcrumbs('submittedReceipts', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollReceiptsContextual,\n alerts: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollReceipts',\n },\n })),\n ),\n cancelledToLandingTransition,\n exitFlowTransition,\n ),\n submittedReceipts: state<MachineTransition>(\n breadcrumbNavigateTransition('landing'),\n exitFlowTransition,\n ),\n transition: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n offCycle: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n}\n"],"names":["payrollFlowBreadcrumbsNodes","ctx","patchBreadcrumbsHeader","PayrollLandingContextual","breadcrumbNavigateTransition","createBreadcrumbNavigateTransition","toLandingReducer","toExecutionReducer","ev","executionInitialState","PayrollExecutionFlowContextual","landingBreadcrumbNavigateTransition","transition","componentEvents","guard","_ctx","reduce","exitFlowTransition","cancelledToLandingTransition","processedToSubmittedOverviewTransition","payPeriod","updateBreadcrumbs","PayrollOverviewContextual","payrollFlowMachine","state","PayrollBlockerContextual","TransitionFlowContextual","OffCycleFlowContextual","PayrollReceiptsContextual"],"mappings":"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"}
1
+ {"version":3,"file":"payrollStateMachine.js","sources":["../../../../src/components/Payroll/PayrollFlow/payrollStateMachine.ts"],"sourcesContent":["import { state, transition, reduce, guard } from 'robot3'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayrollExecutionInitialState } from '../PayrollExecutionFlow'\nimport {\n PayrollLandingContextual,\n PayrollBlockerContextual,\n PayrollOverviewContextual,\n PayrollReceiptsContextual,\n type PayrollFlowContextInterface,\n} from './PayrollFlowComponents'\nimport { PayrollExecutionFlowContextual } from './PayrollExecutionFlowContextual'\nimport { TransitionFlowContextual } from './TransitionFlowContextual'\nimport { OffCycleFlowContextual } from './OffCycleFlowContextual'\nimport { componentEvents } from '@/shared/constants'\nimport type { MachineEventType, MachineTransition } from '@/types/Helpers'\nimport { patchBreadcrumbsHeader, updateBreadcrumbs } from '@/helpers/breadcrumbHelpers'\nimport type { BreadcrumbNodes } from '@/components/Common/FlowBreadcrumbs/FlowBreadcrumbsTypes'\nimport { createBreadcrumbNavigateTransition } from '@/components/Common/FlowBreadcrumbs/breadcrumbTransitionHelpers'\n\ntype PayrollFlowEventPayloads = {\n [componentEvents.RUN_PAYROLL_SELECTED]: {\n payrollUuid: string\n }\n [componentEvents.REVIEW_PAYROLL]: {\n payrollUuid: string\n }\n [componentEvents.RUN_PAYROLL_PROCESSED]: {\n payPeriod?: PayrollPayPeriodType\n payrollUuid?: string\n }\n [componentEvents.RUN_TRANSITION_PAYROLL]: {\n startDate: string\n endDate: string\n payScheduleUuid: string\n }\n}\n\n/** @internal */\nexport const payrollFlowBreadcrumbsNodes: BreadcrumbNodes = {\n landing: {\n parent: null,\n item: {\n id: 'landing',\n label: 'breadcrumbs.landing',\n namespace: 'Payroll.PayrollLanding',\n onNavigate: ((ctx: PayrollFlowContextInterface) => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PayrollLandingContextual,\n alerts: undefined,\n payrollUuid: undefined,\n executionInitialState: undefined,\n })) as (context: unknown) => unknown,\n },\n },\n blockers: {\n parent: 'landing',\n item: {\n id: 'blockers',\n label: 'breadcrumbLabel',\n namespace: 'Payroll.PayrollBlocker',\n },\n },\n submittedOverview: {\n parent: 'landing',\n item: {\n id: 'submittedOverview',\n label: 'breadcrumbs.overview',\n namespace: 'Payroll.PayrollLanding',\n },\n },\n submittedReceipts: {\n parent: 'landing',\n item: {\n id: 'submittedReceipts',\n label: 'breadcrumbs.receipt',\n namespace: 'Payroll.PayrollLanding',\n },\n },\n}\n\nconst breadcrumbNavigateTransition =\n createBreadcrumbNavigateTransition<PayrollFlowContextInterface>()\n\nfunction toLandingReducer(ctx: PayrollFlowContextInterface): PayrollFlowContextInterface {\n return {\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: PayrollLandingContextual,\n alerts: undefined,\n payrollUuid: undefined,\n payPeriod: undefined,\n executionInitialState: undefined,\n }\n}\n\nfunction toExecutionReducer(\n ctx: PayrollFlowContextInterface,\n ev: { payload: { payrollUuid: string } },\n executionInitialState: PayrollExecutionInitialState,\n): PayrollFlowContextInterface {\n return {\n ...ctx,\n component: PayrollExecutionFlowContextual,\n alerts: undefined,\n payrollUuid: ev.payload.payrollUuid,\n showPayrollCancelledAlert: false,\n executionInitialState,\n }\n}\n\nconst landingBreadcrumbNavigateTransition = transition(\n componentEvents.BREADCRUMB_NAVIGATE,\n 'landing',\n guard(\n (_ctx: PayrollFlowContextInterface, ev: { payload: { key: string } }) =>\n ev.payload.key === 'landing',\n ),\n reduce(toLandingReducer),\n)\n\nconst exitFlowTransition = transition(\n componentEvents.PAYROLL_EXIT_FLOW,\n 'landing',\n reduce(toLandingReducer),\n)\n\nconst cancelledToLandingTransition = transition(\n componentEvents.RUN_PAYROLL_CANCELLED,\n 'landing',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...toLandingReducer(ctx),\n showPayrollCancelledAlert: true,\n })),\n)\n\nconst processedToSubmittedOverviewTransition = transition(\n componentEvents.RUN_PAYROLL_PROCESSED,\n 'submittedOverview',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollFlowEventPayloads, typeof componentEvents.RUN_PAYROLL_PROCESSED>,\n ): PayrollFlowContextInterface => {\n const payPeriod = ev.payload.payPeriod ?? ctx.payPeriod\n return {\n ...updateBreadcrumbs('submittedOverview', ctx, {\n startDate: payPeriod?.startDate ?? '',\n endDate: payPeriod?.endDate ?? '',\n }),\n component: PayrollOverviewContextual,\n alerts: undefined,\n payrollUuid: ev.payload.payrollUuid ?? ctx.payrollUuid,\n payPeriod,\n executionInitialState: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollOverview',\n },\n }\n },\n ),\n)\n\n/** @internal */\nexport const payrollFlowMachine = {\n landing: state<MachineTransition>(\n transition(\n componentEvents.RUN_PAYROLL_SELECTED,\n 'execution',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<\n PayrollFlowEventPayloads,\n typeof componentEvents.RUN_PAYROLL_SELECTED\n >,\n ) => toExecutionReducer(ctx, ev, 'configuration'),\n ),\n ),\n transition(\n componentEvents.REVIEW_PAYROLL,\n 'execution',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<PayrollFlowEventPayloads, typeof componentEvents.REVIEW_PAYROLL>,\n ) => toExecutionReducer(ctx, ev, 'overview'),\n ),\n ),\n transition(\n componentEvents.RUN_PAYROLL_BLOCKERS_VIEW_ALL,\n 'blockers',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...updateBreadcrumbs('blockers', ctx),\n component: PayrollBlockerContextual,\n alerts: undefined,\n showPayrollCancelledAlert: false,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollBlocker',\n },\n })),\n ),\n transition(\n componentEvents.RUN_PAYROLL_CANCELLED_ALERT_DISMISSED,\n 'landing',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...ctx,\n showPayrollCancelledAlert: false,\n })),\n ),\n transition(\n componentEvents.RUN_TRANSITION_PAYROLL,\n 'transition',\n reduce(\n (\n ctx: PayrollFlowContextInterface,\n ev: MachineEventType<\n PayrollFlowEventPayloads,\n typeof componentEvents.RUN_TRANSITION_PAYROLL\n >,\n ): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: TransitionFlowContextual,\n alerts: undefined,\n transitionStartDate: ev.payload.startDate,\n transitionEndDate: ev.payload.endDate,\n transitionPayScheduleUuid: ev.payload.payScheduleUuid,\n showPayrollCancelledAlert: false,\n }),\n ),\n ),\n transition(\n componentEvents.RUN_OFF_CYCLE_PAYROLL,\n 'offCycle',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...patchBreadcrumbsHeader(ctx, { currentBreadcrumbId: undefined }),\n component: OffCycleFlowContextual,\n alerts: undefined,\n showPayrollCancelledAlert: false,\n })),\n ),\n ),\n execution: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n blockers: state<MachineTransition>(breadcrumbNavigateTransition('landing'), exitFlowTransition),\n submittedOverview: state<MachineTransition>(\n breadcrumbNavigateTransition('landing'),\n transition(\n componentEvents.RUN_PAYROLL_RECEIPT_GET,\n 'submittedReceipts',\n reduce((ctx: PayrollFlowContextInterface): PayrollFlowContextInterface => ({\n ...updateBreadcrumbs('submittedReceipts', ctx, {\n startDate: ctx.payPeriod?.startDate ?? '',\n endDate: ctx.payPeriod?.endDate ?? '',\n }),\n component: PayrollReceiptsContextual,\n alerts: undefined,\n ctaConfig: {\n labelKey: 'exitFlowCta',\n namespace: 'Payroll.PayrollReceipts',\n },\n })),\n ),\n cancelledToLandingTransition,\n exitFlowTransition,\n ),\n submittedReceipts: state<MachineTransition>(\n breadcrumbNavigateTransition('landing'),\n exitFlowTransition,\n ),\n transition: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n offCycle: state<MachineTransition>(\n landingBreadcrumbNavigateTransition,\n exitFlowTransition,\n cancelledToLandingTransition,\n processedToSubmittedOverviewTransition,\n ),\n}\n"],"names":["payrollFlowBreadcrumbsNodes","ctx","patchBreadcrumbsHeader","PayrollLandingContextual","breadcrumbNavigateTransition","createBreadcrumbNavigateTransition","toLandingReducer","toExecutionReducer","ev","executionInitialState","PayrollExecutionFlowContextual","landingBreadcrumbNavigateTransition","transition","componentEvents","guard","_ctx","reduce","exitFlowTransition","cancelledToLandingTransition","processedToSubmittedOverviewTransition","payPeriod","updateBreadcrumbs","PayrollOverviewContextual","payrollFlowMachine","state","PayrollBlockerContextual","TransitionFlowContextual","OffCycleFlowContextual","PayrollReceiptsContextual"],"mappings":"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"}
@@ -1,26 +1,26 @@
1
- import { jsx as t, jsxs as m, Fragment as J } from "react/jsx-runtime";
1
+ import { jsx as t, jsxs as m, Fragment as X } from "react/jsx-runtime";
2
2
  import { useRef as fe, useMemo as Ee, Fragment as ge } from "react";
3
3
  import { useTranslation as ee } from "react-i18next";
4
4
  import { PayrollUpdatePaymentMethod as ye } from "@gusto/embedded-api/models/components/payrollupdate";
5
- import { isSplitByWorkweek as I } from "../PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js";
6
- import { PayrollEditEmployeeErrorCodes as B } from "../PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js";
5
+ import { isSplitByWorkweek as U } from "../PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js";
6
+ import { PayrollEditEmployeeErrorCodes as T } from "../PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema.js";
7
7
  import E from "./UNSTABLE_PayrollEditEmployee.module.scss.js";
8
- import { componentEvents as Q, COMPENSATION_NAME_REIMBURSEMENT as Ce, COMPENSATION_NAME_PAYCHECK_TIPS as Ne, COMPENSATION_NAME_CASH_TIPS as ve, COMPENSATION_NAME_CORRECTION_PAYMENT as Oe, COMPENSATION_NAME_COMMISSION as Ae, COMPENSATION_NAME_BONUS as Te, COMPENSATION_NAME_DOUBLE_OVERTIME as Pe, COMPENSATION_NAME_OVERTIME as Me, COMPENSATION_NAME_REGULAR_HOURS as Se } from "../../../shared/constants.js";
9
- import { BaseBoundaries as Re, BaseLayout as X } from "../../Base/Base.js";
8
+ import { componentEvents as J, COMPENSATION_NAME_REIMBURSEMENT as Ce, COMPENSATION_NAME_PAYCHECK_TIPS as Ne, COMPENSATION_NAME_CASH_TIPS as ve, COMPENSATION_NAME_CORRECTION_PAYMENT as Ae, COMPENSATION_NAME_COMMISSION as Oe, COMPENSATION_NAME_BONUS as Te, COMPENSATION_NAME_DOUBLE_OVERTIME as Me, COMPENSATION_NAME_OVERTIME as Pe, COMPENSATION_NAME_REGULAR_HOURS as Re } from "../../../shared/constants.js";
9
+ import { BaseBoundaries as Se, BaseLayout as Q } from "../../Base/Base.js";
10
10
  import "../../Base/useBase.js";
11
- import { useComponentDictionary as Le, useI18n as _e } from "../../../i18n/I18n.js";
11
+ import { useComponentDictionary as _e, useI18n as Le } from "../../../i18n/I18n.js";
12
12
  import { useComponentContext as te } from "../../../contexts/ComponentAdapter/useComponentContext.js";
13
13
  import { Flex as u } from "../../Common/Flex/Flex.js";
14
14
  import { Grid as ke } from "../../Common/Grid/Grid.js";
15
- import { EmptyData as we } from "../../Common/EmptyData/EmptyData.js";
16
- import { SDKFormProvider as xe } from "../../../partner-hook-utils/form/SDKFormProvider.js";
15
+ import { EmptyData as xe } from "../../Common/EmptyData/EmptyData.js";
16
+ import { SDKFormProvider as we } from "../../../partner-hook-utils/form/SDKFormProvider.js";
17
17
  import { firstLastName as De, formatNumberAsCurrency as Ie } from "../../../helpers/formattedStrings.js";
18
- import { useDateFormatter as Be } from "../../../hooks/useDateFormatter.js";
19
- import Fe from "../../../hooks/useContainerBreakpoints/useContainerBreakpoints.js";
18
+ import { useDateFormatter as Ue } from "../../../hooks/useDateFormatter.js";
19
+ import Be from "../../../hooks/useContainerBreakpoints/useContainerBreakpoints.js";
20
20
  import Z from "../../../assets/icons/plus-circle.svg.js";
21
- import Ue from "../../../assets/icons/trashcan.svg.js";
21
+ import Fe from "../../../assets/icons/trashcan.svg.js";
22
22
  import { usePayrollEditEmployeeForm as He } from "../PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js";
23
- import { DataView as R } from "../../Common/DataView/DataView.js";
23
+ import { DataView as _ } from "../../Common/DataView/DataView.js";
24
24
  import { useDataView as Ve } from "../../Common/DataView/useDataView.js";
25
25
  function ft({
26
26
  FallbackComponent: h,
@@ -28,7 +28,7 @@ function ft({
28
28
  ...N
29
29
  }) {
30
30
  return /* @__PURE__ */ t(
31
- Re,
31
+ Se,
32
32
  {
33
33
  componentName: "Payroll.UNSTABLE_PayrollEditEmployee",
34
34
  FallbackComponent: h,
@@ -41,12 +41,12 @@ const je = ({
41
41
  rows: h,
42
42
  isAdding: b,
43
43
  draftFields: N,
44
- onBeginAdd: T,
44
+ onBeginAdd: M,
45
45
  onSave: P,
46
46
  onCancel: L,
47
- onRemove: M
47
+ onRemove: R
48
48
  }) => {
49
- const { t: e } = ee("Payroll.UNSTABLE_PayrollEditEmployee"), { Button: g, ButtonIcon: S, Heading: y } = te(), { Description: C, Amount: v } = N, O = Ve({
49
+ const { t: e } = ee("Payroll.UNSTABLE_PayrollEditEmployee"), { Button: g, ButtonIcon: S, Heading: y } = te(), { Description: C, Amount: v } = N, A = Ve({
50
50
  data: h,
51
51
  columns: [
52
52
  {
@@ -68,24 +68,24 @@ const je = ({
68
68
  ],
69
69
  itemMenu: (d) => {
70
70
  if (d.recurring) return null;
71
- const A = d.description.trim() || e("reimbursementUnnamedFallback");
71
+ const O = d.description.trim() || e("reimbursementUnnamedFallback");
72
72
  return /* @__PURE__ */ t(
73
73
  S,
74
74
  {
75
75
  variant: "tertiary",
76
76
  onClick: () => {
77
- M(d.index);
77
+ R(d.index);
78
78
  },
79
- "aria-label": e("removeReimbursementLabel", { description: A }),
80
- children: /* @__PURE__ */ t(Ue, { "aria-hidden": !0 })
79
+ "aria-label": e("removeReimbursementLabel", { description: O }),
80
+ children: /* @__PURE__ */ t(Fe, { "aria-hidden": !0 })
81
81
  }
82
82
  );
83
83
  },
84
- emptyState: () => /* @__PURE__ */ t(we, { title: e("reimbursementEmptyTitle"), children: /* @__PURE__ */ t(g, { variant: "secondary", onClick: T, icon: /* @__PURE__ */ t(Z, { "aria-hidden": !0 }), children: e("addReimbursementCta") }) })
84
+ emptyState: () => /* @__PURE__ */ t(xe, { title: e("reimbursementEmptyTitle"), children: /* @__PURE__ */ t(g, { variant: "secondary", onClick: M, icon: /* @__PURE__ */ t(Z, { "aria-hidden": !0 }), children: e("addReimbursementCta") }) })
85
85
  });
86
86
  return /* @__PURE__ */ m(u, { flexDirection: "column", gap: 12, children: [
87
87
  /* @__PURE__ */ t(y, { as: "h3", styledAs: "h4", children: e("reimbursementTitle") }),
88
- !(h.length === 0 && b) && /* @__PURE__ */ t(R, { label: e("reimbursementsTableLabel"), ...O }),
88
+ !(h.length === 0 && b) && /* @__PURE__ */ t(_, { label: e("reimbursementsTableLabel"), ...A }),
89
89
  b ? /* @__PURE__ */ m(u, { flexDirection: "column", gap: 12, children: [
90
90
  /* @__PURE__ */ m(ke, { gridTemplateColumns: { base: "1fr", small: [320, 320] }, gap: 20, children: [
91
91
  /* @__PURE__ */ t(
@@ -105,7 +105,7 @@ const je = ({
105
105
  g,
106
106
  {
107
107
  variant: "secondary",
108
- onClick: T,
108
+ onClick: M,
109
109
  title: e("addReimbursementLink"),
110
110
  icon: /* @__PURE__ */ t(Z, { "aria-hidden": !0 }),
111
111
  children: e("addReimbursementLink")
@@ -116,49 +116,53 @@ const je = ({
116
116
  employeeId: h,
117
117
  companyId: b,
118
118
  payrollId: N,
119
- withReimbursements: T = !0,
119
+ withReimbursements: M = !0,
120
120
  onEvent: P,
121
121
  dictionary: L,
122
- LoaderComponent: M
122
+ LoaderComponent: R
123
123
  }) => {
124
- Le("Payroll.UNSTABLE_PayrollEditEmployee", L), _e("Payroll.UNSTABLE_PayrollEditEmployee");
125
- const { t: e } = ee("Payroll.UNSTABLE_PayrollEditEmployee"), g = Be(), { Alert: S, Box: y, BoxHeader: C, Button: v, Heading: O, Text: d } = te(), A = fe(null), f = Fe({ ref: A }).includes("small"), ne = Ee(
124
+ _e("Payroll.UNSTABLE_PayrollEditEmployee", L), Le("Payroll.UNSTABLE_PayrollEditEmployee");
125
+ const { t: e } = ee("Payroll.UNSTABLE_PayrollEditEmployee"), g = Ue(), { Alert: S, Box: y, BoxHeader: C, Button: v, Heading: A, Text: d } = te(), O = fe(null), f = Be({ ref: O }).includes("small"), ne = Ee(
126
126
  () => ({
127
- [B.NEGATIVE_AMOUNT]: e("validations.negativeAmount"),
128
- [B.REQUIRED_WORKWEEK]: e("validations.requiredWorkweek"),
129
- [B.REIMBURSEMENT_AMOUNT]: e("validations.reimbursementAmount")
127
+ [T.NEGATIVE_AMOUNT]: e("validations.negativeAmount"),
128
+ [T.MAX_HOURS]: e("validations.maxHours"),
129
+ [T.REQUIRED_WORKWEEK]: e("validations.requiredWorkweek"),
130
+ [T.REIMBURSEMENT_AMOUNT]: e("validations.reimbursementAmount"),
131
+ [T.MAX_REIMBURSEMENT_AMOUNT]: e(
132
+ "validations.maxReimbursementAmount"
133
+ )
130
134
  }),
131
135
  [e]
132
136
  ), r = He({
133
137
  employeeId: h,
134
138
  companyId: b,
135
139
  payrollId: N,
136
- withReimbursements: T,
140
+ withReimbursements: M,
137
141
  errorMessages: ne
138
142
  });
139
143
  if (r.isLoading)
140
- return /* @__PURE__ */ t("div", { ref: A, className: E.container, children: /* @__PURE__ */ t(X, { isLoading: !0, error: r.errorHandling.errors, LoaderComponent: M }) });
141
- const { employee: _ } = r.data, c = r.form.Fields, F = De({
142
- first_name: _.firstName,
143
- last_name: _.lastName
144
+ return /* @__PURE__ */ t("div", { ref: O, className: E.container, children: /* @__PURE__ */ t(Q, { isLoading: !0, error: r.errorHandling.errors, LoaderComponent: R }) });
145
+ const { employee: k } = r.data, c = r.form.Fields, B = De({
146
+ first_name: k.firstName,
147
+ last_name: k.lastName
144
148
  }), re = (n) => {
145
149
  switch (n) {
146
- case Se:
150
+ case Re:
147
151
  return e("compensationNames.regularHours");
148
- case Me:
149
- return e("compensationNames.overtime");
150
152
  case Pe:
153
+ return e("compensationNames.overtime");
154
+ case Me:
151
155
  return e("compensationNames.doubleOvertime");
152
156
  default:
153
157
  return n;
154
158
  }
155
- }, k = (n) => {
159
+ }, x = (n) => {
156
160
  switch (n) {
157
161
  case Te:
158
162
  return e("fixedCompensationNames.bonus");
159
- case Ae:
160
- return e("fixedCompensationNames.commission");
161
163
  case Oe:
164
+ return e("fixedCompensationNames.commission");
165
+ case Ae:
162
166
  return e("fixedCompensationNames.correctionPayment");
163
167
  case ve:
164
168
  return e("fixedCompensationNames.cashTips");
@@ -169,11 +173,11 @@ const je = ({
169
173
  default:
170
174
  return n;
171
175
  }
172
- }, w = (n) => I(n) ? n[r.data.workweeks[0]?.startDate ?? ""] ?? [] : n, U = (n, i) => {
173
- const { label: o, rowHeader: a, valueColumnLabel: l, labelFor: s, adornmentStart: me, adornmentEnd: de } = i, ce = I(n), ue = w(n), $ = (p, x) => /* @__PURE__ */ t("div", { className: E.inputContainer, children: /* @__PURE__ */ t(
176
+ }, w = (n) => U(n) ? n[r.data.workweeks[0]?.startDate ?? ""] ?? [] : n, F = (n, i) => {
177
+ const { label: o, rowHeader: a, valueColumnLabel: l, labelFor: s, adornmentStart: me, adornmentEnd: de } = i, ce = U(n), ue = w(n), $ = (p, D) => /* @__PURE__ */ t("div", { className: E.inputContainer, children: /* @__PURE__ */ t(
174
178
  p.Field,
175
179
  {
176
- label: x,
180
+ label: D,
177
181
  shouldVisuallyHideLabel: !0,
178
182
  adornmentStart: me,
179
183
  adornmentEnd: de
@@ -183,18 +187,18 @@ const je = ({
183
187
  justify: "end",
184
188
  render: (p) => $(p, s(p.name))
185
189
  }, he = r.data.workweeks.map(
186
- ({ startDate: p, endDate: x }) => {
187
- const K = g.formatPayPeriodRange(p, x, {
190
+ ({ startDate: p, endDate: D }) => {
191
+ const K = g.formatPayPeriodRange(p, D, {
188
192
  useShortMonth: !0
189
193
  });
190
194
  return {
191
195
  title: K,
192
196
  justify: "end",
193
- render: (D) => {
197
+ render: (I) => {
194
198
  const q = n[p]?.find(
195
- (z) => z.jobUuid === D.jobUuid && z.name === D.name
199
+ (z) => z.jobUuid === I.jobUuid && z.name === I.name
196
200
  );
197
- return q ? $(q, `${s(D.name)} ${K}`) : null;
201
+ return q ? $(q, `${s(I.name)} ${K}`) : null;
198
202
  }
199
203
  };
200
204
  }
@@ -202,10 +206,10 @@ const je = ({
202
206
  { title: a, render: (p) => s(p.name) },
203
207
  ...ce ? he : [pe]
204
208
  ];
205
- return /* @__PURE__ */ t(R, { label: o, isWithinBox: !0, columns: be, data: ue });
209
+ return /* @__PURE__ */ t(_, { label: o, isWithinBox: !0, columns: be, data: ue });
206
210
  }, ie = (n, i) => {
207
211
  const { title: o, footer: a, ...l } = i;
208
- return w(n).length === 0 && !a ? null : /* @__PURE__ */ t(y, { header: /* @__PURE__ */ t(C, { title: o }), withPadding: !1, footer: a, children: U(n, l) });
212
+ return w(n).length === 0 && !a ? null : /* @__PURE__ */ t(y, { header: /* @__PURE__ */ t(C, { title: o }), withPadding: !1, footer: a, children: F(n, l) });
209
213
  }, H = (n, i) => {
210
214
  if (n.length === 0) return null;
211
215
  const { title: o, description: a } = i, l = [
@@ -227,7 +231,7 @@ const je = ({
227
231
  ) })
228
232
  }
229
233
  ];
230
- return /* @__PURE__ */ t(y, { header: /* @__PURE__ */ t(C, { title: o, description: a }), withPadding: !1, children: /* @__PURE__ */ t(R, { label: o, isWithinBox: !0, columns: l, data: n }) });
234
+ return /* @__PURE__ */ t(y, { header: /* @__PURE__ */ t(C, { title: o, description: a }), withPadding: !1, children: /* @__PURE__ */ t(_, { label: o, isWithinBox: !0, columns: l, data: n }) });
231
235
  }, V = (n, i) => {
232
236
  const o = [
233
237
  { title: e("typeColumn"), render: (a) => a.label },
@@ -237,29 +241,29 @@ const je = ({
237
241
  render: (a) => /* @__PURE__ */ t("div", { className: E.inputContainer, children: /* @__PURE__ */ t(a.Field, { label: a.label, shouldVisuallyHideLabel: !0, adornmentStart: "$" }) })
238
242
  }
239
243
  ];
240
- return /* @__PURE__ */ t(R, { label: i, isWithinBox: !0, columns: o, data: n });
244
+ return /* @__PURE__ */ t(_, { label: i, isWithinBox: !0, columns: o, data: n });
241
245
  }, j = (n) => /* @__PURE__ */ t("div", { className: E.earningsGroupLabel, children: /* @__PURE__ */ t(d, { size: "sm", weight: "semibold", children: n }) }), ae = () => {
242
246
  const n = c.overtimeIncludedEarnings, i = c.overtimeExcludedEarnings.map((l) => ({
243
- label: k(l.id),
247
+ label: x(l.id),
244
248
  Field: l.Field
245
249
  })), o = w(n).length > 0;
246
250
  if (!o && i.length === 0) return null;
247
- const a = U(n, {
251
+ const a = F(n, {
248
252
  label: e("additionalEarningsTitle"),
249
253
  rowHeader: e("typeColumn"),
250
254
  valueColumnLabel: e("amountColumn"),
251
- labelFor: k,
255
+ labelFor: x,
252
256
  adornmentStart: "$"
253
257
  });
254
- if (!I(n)) {
258
+ if (!U(n)) {
255
259
  const l = [
256
- ...n.map((s) => ({ label: k(s.name), Field: s.Field })),
260
+ ...n.map((s) => ({ label: x(s.name), Field: s.Field })),
257
261
  ...i
258
262
  ];
259
263
  return /* @__PURE__ */ t(y, { header: /* @__PURE__ */ t(C, { title: e("additionalEarningsTitle") }), withPadding: !1, children: V(l, e("additionalEarningsTitle")) });
260
264
  }
261
265
  return /* @__PURE__ */ m(y, { header: /* @__PURE__ */ t(C, { title: e("additionalEarningsTitle") }), withPadding: !1, children: [
262
- o ? /* @__PURE__ */ m(J, { children: [
266
+ o ? /* @__PURE__ */ m(X, { children: [
263
267
  /* @__PURE__ */ t("div", { className: E.earningsAlert, children: /* @__PURE__ */ t(
264
268
  S,
265
269
  {
@@ -272,16 +276,16 @@ const je = ({
272
276
  j(e("overtimeIncludedEarningsGroupLabel")),
273
277
  a
274
278
  ] }) : null,
275
- i.length > 0 ? /* @__PURE__ */ m(J, { children: [
279
+ i.length > 0 ? /* @__PURE__ */ m(X, { children: [
276
280
  j(e("overtimeExcludedEarningsGroupLabel")),
277
281
  V(i, e("overtimeExcludedEarningsGroupLabel"))
278
282
  ] }) : null
279
283
  ] });
280
284
  }, W = c.paymentMethod, G = c.reimbursementDraft, le = r.data.reimbursements, oe = r.form.reimbursementDraft?.isAdding ?? !1, se = async () => {
281
285
  const n = await r.actions.onSubmit();
282
- n && P(Q.RUN_PAYROLL_EMPLOYEE_SAVED, {
286
+ n && P(J.RUN_PAYROLL_EMPLOYEE_SAVED, {
283
287
  payrollPrepared: n.data,
284
- employee: _
288
+ employee: k
285
289
  });
286
290
  }, Y = /* @__PURE__ */ m(
287
291
  u,
@@ -292,7 +296,7 @@ const je = ({
292
296
  gap: 12,
293
297
  children: [
294
298
  /* @__PURE__ */ t(v, { variant: "secondary", onClick: () => {
295
- P(Q.RUN_PAYROLL_EMPLOYEE_CANCELLED);
299
+ P(J.RUN_PAYROLL_EMPLOYEE_CANCELLED);
296
300
  }, title: e("cancelCta"), children: e("cancelCta") }),
297
301
  /* @__PURE__ */ t(
298
302
  v,
@@ -308,7 +312,7 @@ const je = ({
308
312
  ]
309
313
  }
310
314
  );
311
- return /* @__PURE__ */ t("div", { ref: A, className: E.container, children: /* @__PURE__ */ t(X, { error: r.errorHandling.errors, LoaderComponent: M, children: /* @__PURE__ */ t(xe, { formHookResult: r, children: /* @__PURE__ */ m(u, { flexDirection: "column", gap: 24, children: [
315
+ return /* @__PURE__ */ t("div", { ref: O, className: E.container, children: /* @__PURE__ */ t(Q, { error: r.errorHandling.errors, LoaderComponent: R, children: /* @__PURE__ */ t(we, { formHookResult: r, children: /* @__PURE__ */ m(u, { flexDirection: "column", gap: 24, children: [
312
316
  /* @__PURE__ */ m(
313
317
  u,
314
318
  {
@@ -317,7 +321,7 @@ const je = ({
317
321
  alignItems: f ? "flex-start" : "stretch",
318
322
  gap: 12,
319
323
  children: [
320
- /* @__PURE__ */ t(u, { flexDirection: "column", alignItems: "stretch", gap: 8, children: /* @__PURE__ */ t(O, { as: "h1", styledAs: "h2", children: e("pageTitle", { employeeName: F }) }) }),
324
+ /* @__PURE__ */ t(u, { flexDirection: "column", alignItems: "stretch", gap: 8, children: /* @__PURE__ */ t(A, { as: "h1", styledAs: "h2", children: e("pageTitle", { employeeName: B }) }) }),
321
325
  f && Y
322
326
  ]
323
327
  }
@@ -326,12 +330,12 @@ const je = ({
326
330
  (() => {
327
331
  const n = c.jobs.length > 1, i = r.data.isOvertimeEligible ? e("regularHoursTitle") : e("regularHoursTitleWithoutOvertime"), o = !r.data.withOvertime && r.data.isOvertimeEligible, a = r.data.withOvertime && r.data.isOvertimeEligible;
328
332
  return /* @__PURE__ */ m(u, { flexDirection: "column", gap: 16, children: [
329
- n ? /* @__PURE__ */ t(O, { as: "h3", children: i }) : null,
333
+ n ? /* @__PURE__ */ t(A, { as: "h3", children: i }) : null,
330
334
  a ? /* @__PURE__ */ t(
331
335
  S,
332
336
  {
333
337
  status: "info",
334
- label: e("overtimeWorkweekAlert", { employeeName: F }),
338
+ label: e("overtimeWorkweekAlert", { employeeName: B }),
335
339
  disableScrollIntoView: !0
336
340
  }
337
341
  ) : null,
@@ -378,7 +382,7 @@ const je = ({
378
382
  }
379
383
  ) : null,
380
384
  /* @__PURE__ */ m(u, { flexDirection: "column", gap: 12, children: [
381
- /* @__PURE__ */ t(O, { as: "h3", styledAs: "h4", children: e("paymentMethodTitle") }),
385
+ /* @__PURE__ */ t(A, { as: "h3", styledAs: "h4", children: e("paymentMethodTitle") }),
382
386
  /* @__PURE__ */ t(
383
387
  W,
384
388
  {
@@ -1 +1 @@
1
- {"version":3,"file":"UNSTABLE_PayrollEditEmployee.js","sources":["../../../../src/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.tsx"],"sourcesContent":["import { Fragment, useMemo, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { PayrollUpdatePaymentMethod } from '@gusto/embedded-api/models/components/payrollupdate'\nimport type { PayrollEditEmployeeProps } from '../PayrollEditEmployee/PayrollEditEmployee'\nimport { usePayrollEditEmployeeForm } from '../PayrollEditEmployee/shared/usePayrollEditEmployeeForm'\nimport {\n isSplitByWorkweek,\n type HourEntry,\n type TimeOffEntry,\n type ReimbursementRow,\n type ReimbursementDraftFields,\n} from '../PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields'\nimport { PayrollEditEmployeeErrorCodes } from '../PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema'\nimport styles from './UNSTABLE_PayrollEditEmployee.module.scss'\nimport {\n componentEvents,\n COMPENSATION_NAME_REGULAR_HOURS,\n COMPENSATION_NAME_OVERTIME,\n COMPENSATION_NAME_DOUBLE_OVERTIME,\n COMPENSATION_NAME_BONUS,\n COMPENSATION_NAME_COMMISSION,\n COMPENSATION_NAME_CORRECTION_PAYMENT,\n COMPENSATION_NAME_CASH_TIPS,\n COMPENSATION_NAME_PAYCHECK_TIPS,\n COMPENSATION_NAME_REIMBURSEMENT,\n} from '@/shared/constants'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { Flex, Grid, DataView, useDataView, EmptyData } from '@/components/Common'\nimport type { useDataViewPropReturn } from '@/components/Common/DataView/useDataView'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\n\n/**\n * In-development regular-rate-of-pay rebuild of {@link PayrollEditEmployee}.\n *\n * @remarks\n * Gated behind the `payrollRegularRateOfPay` unstable feature flag and not part of the public\n * SDK surface. `PayrollEditEmployee` renders this in place of the stable editor when the flag is\n * enabled. Consumes {@link usePayrollEditEmployeeForm} and renders the header, the hours /\n * additional-earnings / time-off / payment-method sections, and the\n * `Cancel`/`Save` controls, performing a real payroll update on save. For an overtime-eligible\n * employee on a multi-workweek payroll, Overtime/Double-overtime rows start hidden behind a single,\n * employee-level \"Add overtime\" control (`form.data.withOvertime` / `form.actions.addOvertime`)\n * unless the employee already has real overtime hours or matching per-workweek breakdowns; adding\n * overtime also switches hours and overtime-affecting earnings to per-workweek columns and surfaces\n * the per-row \"fill in every workweek\" validation. `Cancel` and `Save` emit the same events as the\n * stable component so the surrounding flow behaves identically.\n *\n * @internal\n */\nexport function UNSTABLE_PayrollEditEmployee({\n FallbackComponent,\n LoaderComponent,\n ...props\n}: PayrollEditEmployeeProps) {\n return (\n <BaseBoundaries\n componentName=\"Payroll.UNSTABLE_PayrollEditEmployee\"\n FallbackComponent={FallbackComponent}\n LoaderComponent={LoaderComponent}\n >\n <Root LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n\ninterface ReimbursementsSectionProps {\n rows: ReimbursementRow[]\n isAdding: boolean\n draftFields: ReimbursementDraftFields\n onBeginAdd: () => void\n onSave: () => void\n onCancel: () => void\n onRemove: (index: number) => void\n}\n\n// Reimbursement UI duplicated from the stable PayrollEditEmployeePresentation for\n// visual parity while the RRoP editor is developed alongside legacy. Powered by\n// usePayrollEditEmployeeForm rather than a local field array/draft form.\nconst ReimbursementsSection = ({\n rows,\n isAdding,\n draftFields,\n onBeginAdd,\n onSave,\n onCancel,\n onRemove,\n}: ReimbursementsSectionProps) => {\n const { t } = useTranslation('Payroll.UNSTABLE_PayrollEditEmployee')\n const { Button, ButtonIcon, Heading } = useComponentContext()\n const { Description, Amount } = draftFields\n\n const reimbursementDataViewProps = useDataView<ReimbursementRow>({\n data: rows,\n columns: [\n {\n key: 'description',\n title: t('reimbursementDescriptionColumn'),\n render: row => row.description.trim() || t('reimbursementUnnamedFallback'),\n },\n {\n key: 'amount',\n title: t('reimbursementAmountColumn'),\n justify: 'end',\n render: row => formatNumberAsCurrency(parseFloat(row.amount || '0')),\n },\n {\n key: 'recurring',\n title: t('reimbursementTypeColumn'),\n render: row =>\n row.recurring ? t('reimbursementTypeRecurring') : t('reimbursementTypeOneTime'),\n },\n ],\n itemMenu: row => {\n if (row.recurring) return null\n const displayDescription = row.description.trim() || t('reimbursementUnnamedFallback')\n return (\n <ButtonIcon\n variant=\"tertiary\"\n onClick={() => {\n onRemove(row.index)\n }}\n aria-label={t('removeReimbursementLabel', { description: displayDescription })}\n >\n <TrashCanSvg aria-hidden />\n </ButtonIcon>\n )\n },\n emptyState: () => (\n <EmptyData title={t('reimbursementEmptyTitle')}>\n <Button variant=\"secondary\" onClick={onBeginAdd} icon={<PlusCircleIcon aria-hidden />}>\n {t('addReimbursementCta')}\n </Button>\n </EmptyData>\n ),\n })\n\n return (\n <Flex flexDirection=\"column\" gap={12}>\n <Heading as=\"h3\" styledAs=\"h4\">\n {t('reimbursementTitle')}\n </Heading>\n {!(rows.length === 0 && isAdding) && (\n <DataView label={t('reimbursementsTableLabel')} {...reimbursementDataViewProps} />\n )}\n {isAdding ? (\n <Flex flexDirection=\"column\" gap={12}>\n <Grid gridTemplateColumns={{ base: '1fr', small: [320, 320] }} gap={20}>\n <Description\n label={t('reimbursementDescriptionLabel')}\n placeholder={t('reimbursementDescriptionPlaceholder')}\n />\n <Amount label={t('reimbursementAmountLabel')} adornmentStart=\"$\" isRequired />\n </Grid>\n <Flex gap={12}>\n <Button onClick={onSave} title={t('saveReimbursementCta')}>\n {t('saveReimbursementCta')}\n </Button>\n <Button variant=\"secondary\" onClick={onCancel} title={t('cancelReimbursementCta')}>\n {t('cancelReimbursementCta')}\n </Button>\n </Flex>\n </Flex>\n ) : (\n rows.length > 0 && (\n <div>\n <Button\n variant=\"secondary\"\n onClick={onBeginAdd}\n title={t('addReimbursementLink')}\n icon={<PlusCircleIcon aria-hidden />}\n >\n {t('addReimbursementLink')}\n </Button>\n </div>\n )\n )}\n </Flex>\n )\n}\n\nconst Root = ({\n employeeId,\n companyId,\n payrollId,\n withReimbursements = true,\n onEvent,\n dictionary,\n LoaderComponent,\n}: PayrollEditEmployeeProps) => {\n useComponentDictionary('Payroll.UNSTABLE_PayrollEditEmployee', dictionary)\n useI18n('Payroll.UNSTABLE_PayrollEditEmployee')\n const { t } = useTranslation('Payroll.UNSTABLE_PayrollEditEmployee')\n const dateFormatter = useDateFormatter()\n\n const { Alert, Box, BoxHeader, Button, Heading, Text } = useComponentContext()\n\n const containerRef = useRef<HTMLDivElement>(null)\n const breakpoints = useContainerBreakpoints({ ref: containerRef })\n const isSmallOrGreater = breakpoints.includes('small')\n\n // Error copy keyed by code, supplied to the hook once. Every bound field\n // resolves and renders its own message from this — the consumer never\n // reconstructs form paths or picks which rule a field can fail. Memoized so\n // the hook's fields aren't rebuilt each render.\n const errorMessages = useMemo(\n () => ({\n [PayrollEditEmployeeErrorCodes.NEGATIVE_AMOUNT]: t('validations.negativeAmount'),\n [PayrollEditEmployeeErrorCodes.REQUIRED_WORKWEEK]: t('validations.requiredWorkweek'),\n [PayrollEditEmployeeErrorCodes.REIMBURSEMENT_AMOUNT]: t('validations.reimbursementAmount'),\n }),\n [t],\n )\n\n const form = usePayrollEditEmployeeForm({\n employeeId,\n companyId,\n payrollId,\n withReimbursements,\n errorMessages,\n })\n\n if (form.isLoading) {\n return (\n <div ref={containerRef} className={styles.container}>\n <BaseLayout isLoading error={form.errorHandling.errors} LoaderComponent={LoaderComponent} />\n </div>\n )\n }\n\n const { employee } = form.data\n const Fields = form.form.Fields\n\n const employeeName = firstLastName({\n first_name: employee.firstName,\n last_name: employee.lastName,\n })\n\n const hoursLabel = (name: string) => {\n switch (name) {\n case COMPENSATION_NAME_REGULAR_HOURS:\n return t('compensationNames.regularHours')\n case COMPENSATION_NAME_OVERTIME:\n return t('compensationNames.overtime')\n case COMPENSATION_NAME_DOUBLE_OVERTIME:\n return t('compensationNames.doubleOvertime')\n default:\n return name\n }\n }\n\n const earningLabel = (name: string) => {\n switch (name) {\n case COMPENSATION_NAME_BONUS:\n return t('fixedCompensationNames.bonus')\n case COMPENSATION_NAME_COMMISSION:\n return t('fixedCompensationNames.commission')\n case COMPENSATION_NAME_CORRECTION_PAYMENT:\n return t('fixedCompensationNames.correctionPayment')\n case COMPENSATION_NAME_CASH_TIPS:\n return t('fixedCompensationNames.cashTips')\n case COMPENSATION_NAME_PAYCHECK_TIPS:\n return t('fixedCompensationNames.paycheckTips')\n case COMPENSATION_NAME_REIMBURSEMENT:\n return t('fixedCompensationNames.reimbursement')\n default:\n return name\n }\n }\n\n // The visible rows for a section: the first workweek's rows drive the row set\n // (workweek columns fan out from there), or the flat list when not split.\n const getSectionRows = (section: HourEntry[] | Record<string, HourEntry[]>) =>\n isSplitByWorkweek(section) ? (section[form.data.workweeks[0]?.startDate ?? ''] ?? []) : section\n\n const buildBreakdownDataView = (\n section: HourEntry[] | Record<string, HourEntry[]>,\n options: {\n label: string\n rowHeader: string\n valueColumnLabel: string\n labelFor: (name: string) => string\n adornmentStart?: string\n adornmentEnd?: string\n },\n ) => {\n const { label, rowHeader, valueColumnLabel, labelFor, adornmentStart, adornmentEnd } = options\n const split = isSplitByWorkweek(section)\n const rows = getSectionRows(section)\n\n const renderField = (entry: HourEntry, fieldLabel: string) => (\n <div className={styles.inputContainer}>\n <entry.Field\n label={fieldLabel}\n shouldVisuallyHideLabel\n adornmentStart={adornmentStart}\n adornmentEnd={adornmentEnd}\n />\n </div>\n )\n\n const valueColumn: useDataViewPropReturn<HourEntry>['columns'][number] = {\n title: valueColumnLabel,\n justify: 'end',\n render: row => renderField(row, labelFor(row.name)),\n }\n\n // Columns come straight from the hook's normalized workweeks, so each header\n // has both boundary dates without re-deriving them from the raw payroll.\n const workweekColumns: useDataViewPropReturn<HourEntry>['columns'] = form.data.workweeks.map(\n ({ startDate, endDate }) => {\n const rangeLabel = dateFormatter.formatPayPeriodRange(startDate, endDate, {\n useShortMonth: true,\n })\n return {\n title: rangeLabel,\n justify: 'end',\n render: row => {\n const cell = (section as Record<string, HourEntry[]>)[startDate]?.find(\n entry => entry.jobUuid === row.jobUuid && entry.name === row.name,\n )\n return cell ? renderField(cell, `${labelFor(row.name)} ${rangeLabel}`) : null\n },\n }\n },\n )\n\n const columns: useDataViewPropReturn<HourEntry>['columns'] = [\n { title: rowHeader, render: row => labelFor(row.name) },\n ...(split ? workweekColumns : [valueColumn]),\n ]\n\n return <DataView label={label} isWithinBox columns={columns} data={rows} />\n }\n\n const renderBreakdownSection = (\n section: HourEntry[] | Record<string, HourEntry[]>,\n options: {\n title: string\n label: string\n rowHeader: string\n valueColumnLabel: string\n labelFor: (name: string) => string\n adornmentStart?: string\n adornmentEnd?: string\n footer?: React.ReactNode\n },\n ) => {\n const { title, footer, ...viewOptions } = options\n if (getSectionRows(section).length === 0 && !footer) return null\n\n return (\n <Box header={<BoxHeader title={title} />} withPadding={false} footer={footer}>\n {buildBreakdownDataView(section, viewOptions)}\n </Box>\n )\n }\n\n const renderTimeOffSection = (\n entries: TimeOffEntry[],\n options: { title: string; description?: string },\n ) => {\n if (entries.length === 0) return null\n const { title, description } = options\n\n const columns: useDataViewPropReturn<TimeOffEntry>['columns'] = [\n {\n title: t('typeColumn'),\n render: entry => entry.name,\n },\n {\n title: t('hoursColumn'),\n justify: 'end',\n render: entry => (\n <div className={styles.inputContainer}>\n <entry.Field\n label={entry.name}\n shouldVisuallyHideLabel\n adornmentEnd={t('hoursUnit')}\n description={\n entry.remaining !== null\n ? t('timeOffBalance.remaining', { balance: entry.remaining })\n : undefined\n }\n />\n </div>\n ),\n },\n ]\n\n return (\n <Box header={<BoxHeader title={title} description={description} />} withPadding={false}>\n <DataView label={title} isWithinBox columns={columns} data={entries} />\n </Box>\n )\n }\n\n // A flat single-amount earnings table: one \"type\" column and one \"$\" input\n // column. Used for the merged no-overtime list and the overtime-excluded group.\n const renderAmountTable = (\n rows: { label: string; Field: HourEntry['Field'] }[],\n label: string,\n ) => {\n const columns: useDataViewPropReturn<(typeof rows)[number]>['columns'] = [\n { title: t('typeColumn'), render: row => row.label },\n {\n title: t('amountColumn'),\n justify: 'end',\n render: row => (\n <div className={styles.inputContainer}>\n <row.Field label={row.label} shouldVisuallyHideLabel adornmentStart=\"$\" />\n </div>\n ),\n },\n ]\n return <DataView label={label} isWithinBox columns={columns} data={rows} />\n }\n\n const renderGroupLabel = (label: string) => (\n <div className={styles.earningsGroupLabel}>\n <Text size=\"sm\" weight=\"semibold\">\n {label}\n </Text>\n </div>\n )\n\n const renderEarningsSection = () => {\n const includedEarnings = Fields.overtimeIncludedEarnings\n const excludedRows = Fields.overtimeExcludedEarnings.map(entry => ({\n label: earningLabel(entry.id),\n Field: entry.Field,\n }))\n\n const hasIncluded = getSectionRows(includedEarnings).length > 0\n if (!hasIncluded && excludedRows.length === 0) return null\n\n const includedTable = buildBreakdownDataView(includedEarnings, {\n label: t('additionalEarningsTitle'),\n rowHeader: t('typeColumn'),\n valueColumnLabel: t('amountColumn'),\n labelFor: earningLabel,\n adornmentStart: '$',\n })\n\n // Split into per-workweek columns and labeled overtime groups only once\n // overtime is added (the included section becomes workweek-keyed). Otherwise\n // included and excluded earnings render together as one flat list.\n if (!isSplitByWorkweek(includedEarnings)) {\n const mergedRows = [\n ...includedEarnings.map(entry => ({ label: earningLabel(entry.name), Field: entry.Field })),\n ...excludedRows,\n ]\n return (\n <Box header={<BoxHeader title={t('additionalEarningsTitle')} />} withPadding={false}>\n {renderAmountTable(mergedRows, t('additionalEarningsTitle'))}\n </Box>\n )\n }\n\n return (\n <Box header={<BoxHeader title={t('additionalEarningsTitle')} />} withPadding={false}>\n {hasIncluded ? (\n <>\n <div className={styles.earningsAlert}>\n <Alert\n status=\"info\"\n label={t('overtimeMultiplierEarningsAlert')}\n disableScrollIntoView\n >\n <Text size=\"sm\">{t('overtimeMultiplierEarningsAlertDescription')}</Text>\n </Alert>\n </div>\n {renderGroupLabel(t('overtimeIncludedEarningsGroupLabel'))}\n {includedTable}\n </>\n ) : null}\n {excludedRows.length > 0 ? (\n <>\n {renderGroupLabel(t('overtimeExcludedEarningsGroupLabel'))}\n {renderAmountTable(excludedRows, t('overtimeExcludedEarningsGroupLabel'))}\n </>\n ) : null}\n </Box>\n )\n }\n\n const PaymentMethodField = Fields.paymentMethod\n const ReimbursementDraft = Fields.reimbursementDraft\n const reimbursementRows = form.data.reimbursements\n const isAddingReimbursement = form.form.reimbursementDraft?.isAdding ?? false\n\n const handleSave = async () => {\n const result = await form.actions.onSubmit()\n if (!result) return\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.data,\n employee,\n })\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED)\n }\n\n const actions = (\n <Flex\n flexDirection={isSmallOrGreater ? 'row' : 'column'}\n justifyContent={isSmallOrGreater ? 'flex-end' : 'normal'}\n alignItems={isSmallOrGreater ? 'flex-start' : 'stretch'}\n gap={12}\n >\n <Button variant=\"secondary\" onClick={handleCancel} title={t('cancelCta')}>\n {t('cancelCta')}\n </Button>\n <Button\n onClick={() => {\n void handleSave()\n }}\n title={t('saveCta')}\n isLoading={form.status.isPending}\n >\n {t('saveCta')}\n </Button>\n </Flex>\n )\n\n return (\n <div ref={containerRef} className={styles.container}>\n <BaseLayout error={form.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <SDKFormProvider formHookResult={form}>\n <Flex flexDirection=\"column\" gap={24}>\n <Flex\n flexDirection={isSmallOrGreater ? 'row' : 'column'}\n justifyContent=\"space-between\"\n alignItems={isSmallOrGreater ? 'flex-start' : 'stretch'}\n gap={12}\n >\n <Flex flexDirection=\"column\" alignItems=\"stretch\" gap={8}>\n <Heading as=\"h1\" styledAs=\"h2\">\n {t('pageTitle', { employeeName })}\n </Heading>\n </Flex>\n {isSmallOrGreater && actions}\n </Flex>\n {!isSmallOrGreater && actions}\n\n {(() => {\n const isMultiJob = Fields.jobs.length > 1\n const genericHoursTitle = form.data.isOvertimeEligible\n ? t('regularHoursTitle')\n : t('regularHoursTitleWithoutOvertime')\n // \"Add overtime\" is an employee-level action, but the design gives\n // every job its own button so each job's hours box can trigger it.\n const showAddOvertime = !form.data.withOvertime && form.data.isOvertimeEligible\n // Its counterpart once overtime is on: a single employee-level alert\n // explaining the workweek split, rendered once above all jobs.\n const showOvertimeWorkweekAlert =\n form.data.withOvertime && form.data.isOvertimeEligible\n\n return (\n <Flex flexDirection=\"column\" gap={16}>\n {isMultiJob ? <Heading as=\"h3\">{genericHoursTitle}</Heading> : null}\n {showOvertimeWorkweekAlert ? (\n <Alert\n status=\"info\"\n label={t('overtimeWorkweekAlert', { employeeName })}\n disableScrollIntoView\n />\n ) : null}\n {Fields.jobs.map(job => (\n <Fragment key={job.jobUuid}>\n {renderBreakdownSection(job.hours, {\n title: isMultiJob ? (job.title ?? genericHoursTitle) : genericHoursTitle,\n label: genericHoursTitle,\n rowHeader: t('hourTypeColumn'),\n valueColumnLabel: t('hoursColumn'),\n labelFor: hoursLabel,\n adornmentEnd: t('hoursUnit'),\n footer: showAddOvertime ? (\n <Button\n variant=\"secondary\"\n onClick={() => {\n form.actions.addOvertime()\n }}\n title={t('addOvertimeCta')}\n >\n {t('addOvertimeCta')}\n </Button>\n ) : undefined,\n })}\n </Fragment>\n ))}\n </Flex>\n )\n })()}\n\n {renderEarningsSection()}\n\n {renderTimeOffSection(Fields.timeOff, {\n title: Fields.finalPayout ? t('timeOffTitleDismissal') : t('timeOffTitle'),\n })}\n\n {Fields.finalPayout\n ? renderTimeOffSection(Fields.finalPayout, {\n title: t('finalPayoutTitle'),\n description: t('finalPayoutDescription'),\n })\n : null}\n\n {PaymentMethodField ? (\n <Flex flexDirection=\"column\" gap={24}>\n {ReimbursementDraft ? (\n <ReimbursementsSection\n rows={reimbursementRows ?? []}\n isAdding={isAddingReimbursement}\n draftFields={ReimbursementDraft}\n onBeginAdd={() => form.actions.beginAddReimbursement?.()}\n onSave={() => form.actions.saveReimbursement?.()}\n onCancel={() => form.actions.cancelReimbursement?.()}\n onRemove={index => form.actions.removeReimbursement?.(index)}\n />\n ) : null}\n\n <Flex flexDirection=\"column\" gap={12}>\n <Heading as=\"h3\" styledAs=\"h4\">\n {t('paymentMethodTitle')}\n </Heading>\n <PaymentMethodField\n label={t('paymentMethodLabel')}\n description={t('paymentMethodDescription')}\n getOptionLabel={value =>\n value === PayrollUpdatePaymentMethod.Check\n ? t('paymentMethodOptions.check')\n : t('paymentMethodOptions.directDeposit')\n }\n />\n </Flex>\n </Flex>\n ) : null}\n </Flex>\n </SDKFormProvider>\n </BaseLayout>\n </div>\n )\n}\n"],"names":["UNSTABLE_PayrollEditEmployee","FallbackComponent","LoaderComponent","props","jsx","BaseBoundaries","Root","ReimbursementsSection","rows","isAdding","draftFields","onBeginAdd","onSave","onCancel","onRemove","t","useTranslation","Button","ButtonIcon","Heading","useComponentContext","Description","Amount","reimbursementDataViewProps","useDataView","row","formatNumberAsCurrency","displayDescription","TrashCanSvg","EmptyData","PlusCircleIcon","jsxs","Flex","DataView","Grid","employeeId","companyId","payrollId","withReimbursements","onEvent","dictionary","useComponentDictionary","useI18n","dateFormatter","useDateFormatter","Alert","Box","BoxHeader","Text","containerRef","useRef","isSmallOrGreater","useContainerBreakpoints","errorMessages","useMemo","PayrollEditEmployeeErrorCodes","form","usePayrollEditEmployeeForm","styles","BaseLayout","employee","Fields","employeeName","firstLastName","hoursLabel","name","COMPENSATION_NAME_REGULAR_HOURS","COMPENSATION_NAME_OVERTIME","COMPENSATION_NAME_DOUBLE_OVERTIME","earningLabel","COMPENSATION_NAME_BONUS","COMPENSATION_NAME_COMMISSION","COMPENSATION_NAME_CORRECTION_PAYMENT","COMPENSATION_NAME_CASH_TIPS","COMPENSATION_NAME_PAYCHECK_TIPS","COMPENSATION_NAME_REIMBURSEMENT","getSectionRows","section","isSplitByWorkweek","buildBreakdownDataView","options","label","rowHeader","valueColumnLabel","labelFor","adornmentStart","adornmentEnd","split","renderField","entry","fieldLabel","valueColumn","workweekColumns","startDate","endDate","rangeLabel","cell","columns","renderBreakdownSection","title","footer","viewOptions","renderTimeOffSection","entries","description","renderAmountTable","renderGroupLabel","renderEarningsSection","includedEarnings","excludedRows","hasIncluded","includedTable","mergedRows","Fragment","PaymentMethodField","ReimbursementDraft","reimbursementRows","isAddingReimbursement","handleSave","result","componentEvents","actions","SDKFormProvider","isMultiJob","genericHoursTitle","showAddOvertime","showOvertimeWorkweekAlert","job","index","value","PayrollUpdatePaymentMethod"],"mappings":"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"}
1
+ {"version":3,"file":"UNSTABLE_PayrollEditEmployee.js","sources":["../../../../src/components/Payroll/UNSTABLE_PayrollEditEmployee/UNSTABLE_PayrollEditEmployee.tsx"],"sourcesContent":["import { Fragment, useMemo, useRef } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { PayrollUpdatePaymentMethod } from '@gusto/embedded-api/models/components/payrollupdate'\nimport type { PayrollEditEmployeeProps } from '../PayrollEditEmployee/PayrollEditEmployee'\nimport { usePayrollEditEmployeeForm } from '../PayrollEditEmployee/shared/usePayrollEditEmployeeForm'\nimport {\n isSplitByWorkweek,\n type HourEntry,\n type TimeOffEntry,\n type ReimbursementRow,\n type ReimbursementDraftFields,\n} from '../PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields'\nimport { PayrollEditEmployeeErrorCodes } from '../PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeSchema'\nimport styles from './UNSTABLE_PayrollEditEmployee.module.scss'\nimport {\n componentEvents,\n COMPENSATION_NAME_REGULAR_HOURS,\n COMPENSATION_NAME_OVERTIME,\n COMPENSATION_NAME_DOUBLE_OVERTIME,\n COMPENSATION_NAME_BONUS,\n COMPENSATION_NAME_COMMISSION,\n COMPENSATION_NAME_CORRECTION_PAYMENT,\n COMPENSATION_NAME_CASH_TIPS,\n COMPENSATION_NAME_PAYCHECK_TIPS,\n COMPENSATION_NAME_REIMBURSEMENT,\n} from '@/shared/constants'\nimport { BaseBoundaries, BaseLayout } from '@/components/Base'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { Flex, Grid, DataView, useDataView, EmptyData } from '@/components/Common'\nimport type { useDataViewPropReturn } from '@/components/Common/DataView/useDataView'\nimport { SDKFormProvider } from '@/partner-hook-utils/form/SDKFormProvider'\nimport { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\nimport PlusCircleIcon from '@/assets/icons/plus-circle.svg?react'\nimport TrashCanSvg from '@/assets/icons/trashcan.svg?react'\n\n/**\n * In-development regular-rate-of-pay rebuild of {@link PayrollEditEmployee}.\n *\n * @remarks\n * Gated behind the `payrollRegularRateOfPay` unstable feature flag and not part of the public\n * SDK surface. `PayrollEditEmployee` renders this in place of the stable editor when the flag is\n * enabled. Consumes {@link usePayrollEditEmployeeForm} and renders the header, the hours /\n * additional-earnings / time-off / payment-method sections, and the\n * `Cancel`/`Save` controls, performing a real payroll update on save. For an overtime-eligible\n * employee on a multi-workweek payroll, Overtime/Double-overtime rows start hidden behind a single,\n * employee-level \"Add overtime\" control (`form.data.withOvertime` / `form.actions.addOvertime`)\n * unless the employee already has real overtime hours or matching per-workweek breakdowns; adding\n * overtime also switches hours and overtime-affecting earnings to per-workweek columns and surfaces\n * the per-row \"fill in every workweek\" validation. `Cancel` and `Save` emit the same events as the\n * stable component so the surrounding flow behaves identically.\n *\n * @internal\n */\nexport function UNSTABLE_PayrollEditEmployee({\n FallbackComponent,\n LoaderComponent,\n ...props\n}: PayrollEditEmployeeProps) {\n return (\n <BaseBoundaries\n componentName=\"Payroll.UNSTABLE_PayrollEditEmployee\"\n FallbackComponent={FallbackComponent}\n LoaderComponent={LoaderComponent}\n >\n <Root LoaderComponent={LoaderComponent} {...props} />\n </BaseBoundaries>\n )\n}\n\ninterface ReimbursementsSectionProps {\n rows: ReimbursementRow[]\n isAdding: boolean\n draftFields: ReimbursementDraftFields\n onBeginAdd: () => void\n onSave: () => void\n onCancel: () => void\n onRemove: (index: number) => void\n}\n\n// Reimbursement UI duplicated from the stable PayrollEditEmployeePresentation for\n// visual parity while the RRoP editor is developed alongside legacy. Powered by\n// usePayrollEditEmployeeForm rather than a local field array/draft form.\nconst ReimbursementsSection = ({\n rows,\n isAdding,\n draftFields,\n onBeginAdd,\n onSave,\n onCancel,\n onRemove,\n}: ReimbursementsSectionProps) => {\n const { t } = useTranslation('Payroll.UNSTABLE_PayrollEditEmployee')\n const { Button, ButtonIcon, Heading } = useComponentContext()\n const { Description, Amount } = draftFields\n\n const reimbursementDataViewProps = useDataView<ReimbursementRow>({\n data: rows,\n columns: [\n {\n key: 'description',\n title: t('reimbursementDescriptionColumn'),\n render: row => row.description.trim() || t('reimbursementUnnamedFallback'),\n },\n {\n key: 'amount',\n title: t('reimbursementAmountColumn'),\n justify: 'end',\n render: row => formatNumberAsCurrency(parseFloat(row.amount || '0')),\n },\n {\n key: 'recurring',\n title: t('reimbursementTypeColumn'),\n render: row =>\n row.recurring ? t('reimbursementTypeRecurring') : t('reimbursementTypeOneTime'),\n },\n ],\n itemMenu: row => {\n if (row.recurring) return null\n const displayDescription = row.description.trim() || t('reimbursementUnnamedFallback')\n return (\n <ButtonIcon\n variant=\"tertiary\"\n onClick={() => {\n onRemove(row.index)\n }}\n aria-label={t('removeReimbursementLabel', { description: displayDescription })}\n >\n <TrashCanSvg aria-hidden />\n </ButtonIcon>\n )\n },\n emptyState: () => (\n <EmptyData title={t('reimbursementEmptyTitle')}>\n <Button variant=\"secondary\" onClick={onBeginAdd} icon={<PlusCircleIcon aria-hidden />}>\n {t('addReimbursementCta')}\n </Button>\n </EmptyData>\n ),\n })\n\n return (\n <Flex flexDirection=\"column\" gap={12}>\n <Heading as=\"h3\" styledAs=\"h4\">\n {t('reimbursementTitle')}\n </Heading>\n {!(rows.length === 0 && isAdding) && (\n <DataView label={t('reimbursementsTableLabel')} {...reimbursementDataViewProps} />\n )}\n {isAdding ? (\n <Flex flexDirection=\"column\" gap={12}>\n <Grid gridTemplateColumns={{ base: '1fr', small: [320, 320] }} gap={20}>\n <Description\n label={t('reimbursementDescriptionLabel')}\n placeholder={t('reimbursementDescriptionPlaceholder')}\n />\n <Amount label={t('reimbursementAmountLabel')} adornmentStart=\"$\" isRequired />\n </Grid>\n <Flex gap={12}>\n <Button onClick={onSave} title={t('saveReimbursementCta')}>\n {t('saveReimbursementCta')}\n </Button>\n <Button variant=\"secondary\" onClick={onCancel} title={t('cancelReimbursementCta')}>\n {t('cancelReimbursementCta')}\n </Button>\n </Flex>\n </Flex>\n ) : (\n rows.length > 0 && (\n <div>\n <Button\n variant=\"secondary\"\n onClick={onBeginAdd}\n title={t('addReimbursementLink')}\n icon={<PlusCircleIcon aria-hidden />}\n >\n {t('addReimbursementLink')}\n </Button>\n </div>\n )\n )}\n </Flex>\n )\n}\n\nconst Root = ({\n employeeId,\n companyId,\n payrollId,\n withReimbursements = true,\n onEvent,\n dictionary,\n LoaderComponent,\n}: PayrollEditEmployeeProps) => {\n useComponentDictionary('Payroll.UNSTABLE_PayrollEditEmployee', dictionary)\n useI18n('Payroll.UNSTABLE_PayrollEditEmployee')\n const { t } = useTranslation('Payroll.UNSTABLE_PayrollEditEmployee')\n const dateFormatter = useDateFormatter()\n\n const { Alert, Box, BoxHeader, Button, Heading, Text } = useComponentContext()\n\n const containerRef = useRef<HTMLDivElement>(null)\n const breakpoints = useContainerBreakpoints({ ref: containerRef })\n const isSmallOrGreater = breakpoints.includes('small')\n\n // Error copy keyed by code, supplied to the hook once. Every bound field\n // resolves and renders its own message from this — the consumer never\n // reconstructs form paths or picks which rule a field can fail. Memoized so\n // the hook's fields aren't rebuilt each render.\n const errorMessages = useMemo(\n () => ({\n [PayrollEditEmployeeErrorCodes.NEGATIVE_AMOUNT]: t('validations.negativeAmount'),\n [PayrollEditEmployeeErrorCodes.MAX_HOURS]: t('validations.maxHours'),\n [PayrollEditEmployeeErrorCodes.REQUIRED_WORKWEEK]: t('validations.requiredWorkweek'),\n [PayrollEditEmployeeErrorCodes.REIMBURSEMENT_AMOUNT]: t('validations.reimbursementAmount'),\n [PayrollEditEmployeeErrorCodes.MAX_REIMBURSEMENT_AMOUNT]: t(\n 'validations.maxReimbursementAmount',\n ),\n }),\n [t],\n )\n\n const form = usePayrollEditEmployeeForm({\n employeeId,\n companyId,\n payrollId,\n withReimbursements,\n errorMessages,\n })\n\n if (form.isLoading) {\n return (\n <div ref={containerRef} className={styles.container}>\n <BaseLayout isLoading error={form.errorHandling.errors} LoaderComponent={LoaderComponent} />\n </div>\n )\n }\n\n const { employee } = form.data\n const Fields = form.form.Fields\n\n const employeeName = firstLastName({\n first_name: employee.firstName,\n last_name: employee.lastName,\n })\n\n const hoursLabel = (name: string) => {\n switch (name) {\n case COMPENSATION_NAME_REGULAR_HOURS:\n return t('compensationNames.regularHours')\n case COMPENSATION_NAME_OVERTIME:\n return t('compensationNames.overtime')\n case COMPENSATION_NAME_DOUBLE_OVERTIME:\n return t('compensationNames.doubleOvertime')\n default:\n return name\n }\n }\n\n const earningLabel = (name: string) => {\n switch (name) {\n case COMPENSATION_NAME_BONUS:\n return t('fixedCompensationNames.bonus')\n case COMPENSATION_NAME_COMMISSION:\n return t('fixedCompensationNames.commission')\n case COMPENSATION_NAME_CORRECTION_PAYMENT:\n return t('fixedCompensationNames.correctionPayment')\n case COMPENSATION_NAME_CASH_TIPS:\n return t('fixedCompensationNames.cashTips')\n case COMPENSATION_NAME_PAYCHECK_TIPS:\n return t('fixedCompensationNames.paycheckTips')\n case COMPENSATION_NAME_REIMBURSEMENT:\n return t('fixedCompensationNames.reimbursement')\n default:\n return name\n }\n }\n\n // The visible rows for a section: the first workweek's rows drive the row set\n // (workweek columns fan out from there), or the flat list when not split.\n const getSectionRows = (section: HourEntry[] | Record<string, HourEntry[]>) =>\n isSplitByWorkweek(section) ? (section[form.data.workweeks[0]?.startDate ?? ''] ?? []) : section\n\n const buildBreakdownDataView = (\n section: HourEntry[] | Record<string, HourEntry[]>,\n options: {\n label: string\n rowHeader: string\n valueColumnLabel: string\n labelFor: (name: string) => string\n adornmentStart?: string\n adornmentEnd?: string\n },\n ) => {\n const { label, rowHeader, valueColumnLabel, labelFor, adornmentStart, adornmentEnd } = options\n const split = isSplitByWorkweek(section)\n const rows = getSectionRows(section)\n\n const renderField = (entry: HourEntry, fieldLabel: string) => (\n <div className={styles.inputContainer}>\n <entry.Field\n label={fieldLabel}\n shouldVisuallyHideLabel\n adornmentStart={adornmentStart}\n adornmentEnd={adornmentEnd}\n />\n </div>\n )\n\n const valueColumn: useDataViewPropReturn<HourEntry>['columns'][number] = {\n title: valueColumnLabel,\n justify: 'end',\n render: row => renderField(row, labelFor(row.name)),\n }\n\n // Columns come straight from the hook's normalized workweeks, so each header\n // has both boundary dates without re-deriving them from the raw payroll.\n const workweekColumns: useDataViewPropReturn<HourEntry>['columns'] = form.data.workweeks.map(\n ({ startDate, endDate }) => {\n const rangeLabel = dateFormatter.formatPayPeriodRange(startDate, endDate, {\n useShortMonth: true,\n })\n return {\n title: rangeLabel,\n justify: 'end',\n render: row => {\n const cell = (section as Record<string, HourEntry[]>)[startDate]?.find(\n entry => entry.jobUuid === row.jobUuid && entry.name === row.name,\n )\n return cell ? renderField(cell, `${labelFor(row.name)} ${rangeLabel}`) : null\n },\n }\n },\n )\n\n const columns: useDataViewPropReturn<HourEntry>['columns'] = [\n { title: rowHeader, render: row => labelFor(row.name) },\n ...(split ? workweekColumns : [valueColumn]),\n ]\n\n return <DataView label={label} isWithinBox columns={columns} data={rows} />\n }\n\n const renderBreakdownSection = (\n section: HourEntry[] | Record<string, HourEntry[]>,\n options: {\n title: string\n label: string\n rowHeader: string\n valueColumnLabel: string\n labelFor: (name: string) => string\n adornmentStart?: string\n adornmentEnd?: string\n footer?: React.ReactNode\n },\n ) => {\n const { title, footer, ...viewOptions } = options\n if (getSectionRows(section).length === 0 && !footer) return null\n\n return (\n <Box header={<BoxHeader title={title} />} withPadding={false} footer={footer}>\n {buildBreakdownDataView(section, viewOptions)}\n </Box>\n )\n }\n\n const renderTimeOffSection = (\n entries: TimeOffEntry[],\n options: { title: string; description?: string },\n ) => {\n if (entries.length === 0) return null\n const { title, description } = options\n\n const columns: useDataViewPropReturn<TimeOffEntry>['columns'] = [\n {\n title: t('typeColumn'),\n render: entry => entry.name,\n },\n {\n title: t('hoursColumn'),\n justify: 'end',\n render: entry => (\n <div className={styles.inputContainer}>\n <entry.Field\n label={entry.name}\n shouldVisuallyHideLabel\n adornmentEnd={t('hoursUnit')}\n description={\n entry.remaining !== null\n ? t('timeOffBalance.remaining', { balance: entry.remaining })\n : undefined\n }\n />\n </div>\n ),\n },\n ]\n\n return (\n <Box header={<BoxHeader title={title} description={description} />} withPadding={false}>\n <DataView label={title} isWithinBox columns={columns} data={entries} />\n </Box>\n )\n }\n\n // A flat single-amount earnings table: one \"type\" column and one \"$\" input\n // column. Used for the merged no-overtime list and the overtime-excluded group.\n const renderAmountTable = (\n rows: { label: string; Field: HourEntry['Field'] }[],\n label: string,\n ) => {\n const columns: useDataViewPropReturn<(typeof rows)[number]>['columns'] = [\n { title: t('typeColumn'), render: row => row.label },\n {\n title: t('amountColumn'),\n justify: 'end',\n render: row => (\n <div className={styles.inputContainer}>\n <row.Field label={row.label} shouldVisuallyHideLabel adornmentStart=\"$\" />\n </div>\n ),\n },\n ]\n return <DataView label={label} isWithinBox columns={columns} data={rows} />\n }\n\n const renderGroupLabel = (label: string) => (\n <div className={styles.earningsGroupLabel}>\n <Text size=\"sm\" weight=\"semibold\">\n {label}\n </Text>\n </div>\n )\n\n const renderEarningsSection = () => {\n const includedEarnings = Fields.overtimeIncludedEarnings\n const excludedRows = Fields.overtimeExcludedEarnings.map(entry => ({\n label: earningLabel(entry.id),\n Field: entry.Field,\n }))\n\n const hasIncluded = getSectionRows(includedEarnings).length > 0\n if (!hasIncluded && excludedRows.length === 0) return null\n\n const includedTable = buildBreakdownDataView(includedEarnings, {\n label: t('additionalEarningsTitle'),\n rowHeader: t('typeColumn'),\n valueColumnLabel: t('amountColumn'),\n labelFor: earningLabel,\n adornmentStart: '$',\n })\n\n // Split into per-workweek columns and labeled overtime groups only once\n // overtime is added (the included section becomes workweek-keyed). Otherwise\n // included and excluded earnings render together as one flat list.\n if (!isSplitByWorkweek(includedEarnings)) {\n const mergedRows = [\n ...includedEarnings.map(entry => ({ label: earningLabel(entry.name), Field: entry.Field })),\n ...excludedRows,\n ]\n return (\n <Box header={<BoxHeader title={t('additionalEarningsTitle')} />} withPadding={false}>\n {renderAmountTable(mergedRows, t('additionalEarningsTitle'))}\n </Box>\n )\n }\n\n return (\n <Box header={<BoxHeader title={t('additionalEarningsTitle')} />} withPadding={false}>\n {hasIncluded ? (\n <>\n <div className={styles.earningsAlert}>\n <Alert\n status=\"info\"\n label={t('overtimeMultiplierEarningsAlert')}\n disableScrollIntoView\n >\n <Text size=\"sm\">{t('overtimeMultiplierEarningsAlertDescription')}</Text>\n </Alert>\n </div>\n {renderGroupLabel(t('overtimeIncludedEarningsGroupLabel'))}\n {includedTable}\n </>\n ) : null}\n {excludedRows.length > 0 ? (\n <>\n {renderGroupLabel(t('overtimeExcludedEarningsGroupLabel'))}\n {renderAmountTable(excludedRows, t('overtimeExcludedEarningsGroupLabel'))}\n </>\n ) : null}\n </Box>\n )\n }\n\n const PaymentMethodField = Fields.paymentMethod\n const ReimbursementDraft = Fields.reimbursementDraft\n const reimbursementRows = form.data.reimbursements\n const isAddingReimbursement = form.form.reimbursementDraft?.isAdding ?? false\n\n const handleSave = async () => {\n const result = await form.actions.onSubmit()\n if (!result) return\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.data,\n employee,\n })\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED)\n }\n\n const actions = (\n <Flex\n flexDirection={isSmallOrGreater ? 'row' : 'column'}\n justifyContent={isSmallOrGreater ? 'flex-end' : 'normal'}\n alignItems={isSmallOrGreater ? 'flex-start' : 'stretch'}\n gap={12}\n >\n <Button variant=\"secondary\" onClick={handleCancel} title={t('cancelCta')}>\n {t('cancelCta')}\n </Button>\n <Button\n onClick={() => {\n void handleSave()\n }}\n title={t('saveCta')}\n isLoading={form.status.isPending}\n >\n {t('saveCta')}\n </Button>\n </Flex>\n )\n\n return (\n <div ref={containerRef} className={styles.container}>\n <BaseLayout error={form.errorHandling.errors} LoaderComponent={LoaderComponent}>\n <SDKFormProvider formHookResult={form}>\n <Flex flexDirection=\"column\" gap={24}>\n <Flex\n flexDirection={isSmallOrGreater ? 'row' : 'column'}\n justifyContent=\"space-between\"\n alignItems={isSmallOrGreater ? 'flex-start' : 'stretch'}\n gap={12}\n >\n <Flex flexDirection=\"column\" alignItems=\"stretch\" gap={8}>\n <Heading as=\"h1\" styledAs=\"h2\">\n {t('pageTitle', { employeeName })}\n </Heading>\n </Flex>\n {isSmallOrGreater && actions}\n </Flex>\n {!isSmallOrGreater && actions}\n\n {(() => {\n const isMultiJob = Fields.jobs.length > 1\n const genericHoursTitle = form.data.isOvertimeEligible\n ? t('regularHoursTitle')\n : t('regularHoursTitleWithoutOvertime')\n // \"Add overtime\" is an employee-level action, but the design gives\n // every job its own button so each job's hours box can trigger it.\n const showAddOvertime = !form.data.withOvertime && form.data.isOvertimeEligible\n // Its counterpart once overtime is on: a single employee-level alert\n // explaining the workweek split, rendered once above all jobs.\n const showOvertimeWorkweekAlert =\n form.data.withOvertime && form.data.isOvertimeEligible\n\n return (\n <Flex flexDirection=\"column\" gap={16}>\n {isMultiJob ? <Heading as=\"h3\">{genericHoursTitle}</Heading> : null}\n {showOvertimeWorkweekAlert ? (\n <Alert\n status=\"info\"\n label={t('overtimeWorkweekAlert', { employeeName })}\n disableScrollIntoView\n />\n ) : null}\n {Fields.jobs.map(job => (\n <Fragment key={job.jobUuid}>\n {renderBreakdownSection(job.hours, {\n title: isMultiJob ? (job.title ?? genericHoursTitle) : genericHoursTitle,\n label: genericHoursTitle,\n rowHeader: t('hourTypeColumn'),\n valueColumnLabel: t('hoursColumn'),\n labelFor: hoursLabel,\n adornmentEnd: t('hoursUnit'),\n footer: showAddOvertime ? (\n <Button\n variant=\"secondary\"\n onClick={() => {\n form.actions.addOvertime()\n }}\n title={t('addOvertimeCta')}\n >\n {t('addOvertimeCta')}\n </Button>\n ) : undefined,\n })}\n </Fragment>\n ))}\n </Flex>\n )\n })()}\n\n {renderEarningsSection()}\n\n {renderTimeOffSection(Fields.timeOff, {\n title: Fields.finalPayout ? t('timeOffTitleDismissal') : t('timeOffTitle'),\n })}\n\n {Fields.finalPayout\n ? renderTimeOffSection(Fields.finalPayout, {\n title: t('finalPayoutTitle'),\n description: t('finalPayoutDescription'),\n })\n : null}\n\n {PaymentMethodField ? (\n <Flex flexDirection=\"column\" gap={24}>\n {ReimbursementDraft ? (\n <ReimbursementsSection\n rows={reimbursementRows ?? []}\n isAdding={isAddingReimbursement}\n draftFields={ReimbursementDraft}\n onBeginAdd={() => form.actions.beginAddReimbursement?.()}\n onSave={() => form.actions.saveReimbursement?.()}\n onCancel={() => form.actions.cancelReimbursement?.()}\n onRemove={index => form.actions.removeReimbursement?.(index)}\n />\n ) : null}\n\n <Flex flexDirection=\"column\" gap={12}>\n <Heading as=\"h3\" styledAs=\"h4\">\n {t('paymentMethodTitle')}\n </Heading>\n <PaymentMethodField\n label={t('paymentMethodLabel')}\n description={t('paymentMethodDescription')}\n getOptionLabel={value =>\n value === PayrollUpdatePaymentMethod.Check\n ? t('paymentMethodOptions.check')\n : t('paymentMethodOptions.directDeposit')\n }\n />\n </Flex>\n </Flex>\n ) : null}\n </Flex>\n </SDKFormProvider>\n </BaseLayout>\n </div>\n )\n}\n"],"names":["UNSTABLE_PayrollEditEmployee","FallbackComponent","LoaderComponent","props","jsx","BaseBoundaries","Root","ReimbursementsSection","rows","isAdding","draftFields","onBeginAdd","onSave","onCancel","onRemove","t","useTranslation","Button","ButtonIcon","Heading","useComponentContext","Description","Amount","reimbursementDataViewProps","useDataView","row","formatNumberAsCurrency","displayDescription","TrashCanSvg","EmptyData","PlusCircleIcon","jsxs","Flex","DataView","Grid","employeeId","companyId","payrollId","withReimbursements","onEvent","dictionary","useComponentDictionary","useI18n","dateFormatter","useDateFormatter","Alert","Box","BoxHeader","Text","containerRef","useRef","isSmallOrGreater","useContainerBreakpoints","errorMessages","useMemo","PayrollEditEmployeeErrorCodes","form","usePayrollEditEmployeeForm","styles","BaseLayout","employee","Fields","employeeName","firstLastName","hoursLabel","name","COMPENSATION_NAME_REGULAR_HOURS","COMPENSATION_NAME_OVERTIME","COMPENSATION_NAME_DOUBLE_OVERTIME","earningLabel","COMPENSATION_NAME_BONUS","COMPENSATION_NAME_COMMISSION","COMPENSATION_NAME_CORRECTION_PAYMENT","COMPENSATION_NAME_CASH_TIPS","COMPENSATION_NAME_PAYCHECK_TIPS","COMPENSATION_NAME_REIMBURSEMENT","getSectionRows","section","isSplitByWorkweek","buildBreakdownDataView","options","label","rowHeader","valueColumnLabel","labelFor","adornmentStart","adornmentEnd","split","renderField","entry","fieldLabel","valueColumn","workweekColumns","startDate","endDate","rangeLabel","cell","columns","renderBreakdownSection","title","footer","viewOptions","renderTimeOffSection","entries","description","renderAmountTable","renderGroupLabel","renderEarningsSection","includedEarnings","excludedRows","hasIncluded","includedTable","mergedRows","Fragment","PaymentMethodField","ReimbursementDraft","reimbursementRows","isAddingReimbursement","handleSave","result","componentEvents","actions","SDKFormProvider","isMultiJob","genericHoursTitle","showAddOvertime","showOvertimeWorkweekAlert","job","index","value","PayrollUpdatePaymentMethod"],"mappings":"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"}