@gusto/embedded-react-sdk 0.57.2 → 0.57.3

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 (183) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/components/Common/DateRangeFilter/DateRangeFilter.js +32 -32
  3. package/dist/components/Common/DateRangeFilter/DateRangeFilter.js.map +1 -1
  4. package/dist/components/Common/OnboardingStatusBadge/index.js.map +1 -1
  5. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.js.map +1 -1
  6. package/dist/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.js.map +1 -1
  7. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js +34 -14
  8. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.js.map +1 -1
  9. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js +106 -0
  10. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.js.map +1 -0
  11. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js +136 -0
  12. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.js.map +1 -0
  13. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js +38 -20
  14. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js.map +1 -1
  15. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js +78 -44
  16. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js.map +1 -1
  17. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js +45 -37
  18. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js.map +1 -1
  19. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js +244 -95
  20. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js.map +1 -1
  21. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js +22 -0
  22. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.js.map +1 -0
  23. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js +13 -0
  24. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.js.map +1 -0
  25. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js +48 -43
  26. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js.map +1 -1
  27. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.js.map +1 -1
  28. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js +57 -0
  29. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.js.map +1 -0
  30. package/dist/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.js.map +1 -1
  31. package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js +83 -0
  32. package/dist/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.js.map +1 -0
  33. package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js +84 -0
  34. package/dist/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.js.map +1 -0
  35. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -1
  36. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +109 -39
  37. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -1
  38. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js.map +1 -1
  39. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -1
  40. package/dist/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.js.map +1 -1
  41. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js +5 -5
  42. package/dist/components/Contractor/Address/shared/useContractorAddressForm/useContractorAddressForm.js.map +1 -1
  43. package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js +1 -1
  44. package/dist/components/Contractor/Address/shared/useContractorAddressSummary/useContractorAddressSummary.js.map +1 -1
  45. package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js +4 -4
  46. package/dist/components/Contractor/Compensation/shared/useContractorCompensationSummary/useContractorCompensationSummary.js.map +1 -1
  47. package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js +3 -3
  48. package/dist/components/Contractor/Compensation/shared/useContractorPayForm/useContractorPayForm.js.map +1 -1
  49. package/dist/components/Contractor/ContractorList/shared/useContractorList.js +6 -6
  50. package/dist/components/Contractor/ContractorList/shared/useContractorList.js.map +1 -1
  51. package/dist/components/Contractor/Dashboard/Dashboard.js +20 -20
  52. package/dist/components/Contractor/Dashboard/Dashboard.js.map +1 -1
  53. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js +10 -10
  54. package/dist/components/Contractor/Dismissal/useDismissal/useDismissal.js.map +1 -1
  55. package/dist/components/Contractor/Landing/Landing.js +43 -39
  56. package/dist/components/Contractor/Landing/Landing.js.map +1 -1
  57. package/dist/components/Contractor/NewHireReport/NewHireReport.js +3 -3
  58. package/dist/components/Contractor/NewHireReport/NewHireReport.js.map +1 -1
  59. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js +1 -1
  60. package/dist/components/Contractor/Payments/CreateHistoricalPayment/CreateHistoricalPayment.js.map +1 -1
  61. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +10 -10
  62. package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
  63. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js +4 -4
  64. package/dist/components/Contractor/Payments/HistoricalPaymentSummary/HistoricalPaymentSummary.js.map +1 -1
  65. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js +8 -8
  66. package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistory.js.map +1 -1
  67. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js +5 -5
  68. package/dist/components/Contractor/Payments/PaymentStatement/PaymentStatement.js.map +1 -1
  69. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js +3 -3
  70. package/dist/components/Contractor/Payments/PaymentSummary/PaymentSummary.js.map +1 -1
  71. package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js +1 -1
  72. package/dist/components/Contractor/Profile/onboarding/SelfOnboardingContractorProfile.js.map +1 -1
  73. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js +1 -1
  74. package/dist/components/Contractor/Profile/shared/useContractorDetailsForm/useContractorDetailsForm.js.map +1 -1
  75. package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js +1 -1
  76. package/dist/components/Contractor/Profile/shared/useContractorProfileSummary/useContractorProfileSummary.js.map +1 -1
  77. package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js +2 -9
  78. package/dist/components/Contractor/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  79. package/dist/components/Contractor/Submit/Submit.js +18 -18
  80. package/dist/components/Contractor/Submit/Submit.js.map +1 -1
  81. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js +6 -6
  82. package/dist/components/Contractor/shared/SelectContractors/useSelectContractors.js.map +1 -1
  83. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js +25 -25
  84. package/dist/components/Employee/Compensation/shared/useCompensationForm/useCompensationForm.js.map +1 -1
  85. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js +15 -15
  86. package/dist/components/Employee/Compensation/shared/useCompensationManagement/useCompensationManagement.js.map +1 -1
  87. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +1 -1
  88. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  89. package/dist/components/Employee/Dashboard/Dashboard.js +25 -25
  90. package/dist/components/Employee/Dashboard/Dashboard.js.map +1 -1
  91. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js +7 -7
  92. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
  93. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js +1 -1
  94. package/dist/components/Employee/Documents/onboarding/EmployeeDocuments/EmployeeDocuments.js.map +1 -1
  95. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js +6 -6
  96. package/dist/components/Employee/HomeAddress/management/useHomeAddressManagement.js.map +1 -1
  97. package/dist/components/Employee/Landing/Landing.js +37 -33
  98. package/dist/components/Employee/Landing/Landing.js.map +1 -1
  99. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +27 -27
  100. package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js.map +1 -1
  101. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js +6 -6
  102. package/dist/components/Employee/Profile/shared/useEmployeeDetailsForm/useEmployeeDetailsForm.js.map +1 -1
  103. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js +1 -1
  104. package/dist/components/Employee/Profile/shared/useEmployeeProfileSummary/useEmployeeProfileSummary.js.map +1 -1
  105. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js +8 -15
  106. package/dist/components/Employee/SelfOnboardingFlow/SelfOnboardingComponents.js.map +1 -1
  107. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js +11 -11
  108. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployee.js.map +1 -1
  109. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js +12 -12
  110. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummary.js.map +1 -1
  111. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js +26 -26
  112. package/dist/components/Employee/WorkAddress/management/useWorkAddressManagement.js.map +1 -1
  113. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +66 -64
  114. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  115. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +1 -1
  116. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  117. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +6 -6
  118. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  119. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  120. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +1 -1
  121. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
  122. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  123. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +6 -6
  124. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  125. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  126. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +9 -9
  127. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  128. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  129. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  130. package/dist/components/Payroll/helpers.js +1 -1
  131. package/dist/components/Payroll/helpers.js.map +1 -1
  132. package/dist/components/Payroll/payrollTypes.js +1 -1
  133. package/dist/components/Payroll/payrollTypes.js.map +1 -1
  134. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  135. package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js +1 -1
  136. package/dist/contexts/ApiProvider/payrollOffCycleReasonEnumHook.js.map +1 -1
  137. package/dist/i18n/en/Company.Management.PaySchedule.json.js +31 -13
  138. package/dist/i18n/en/Company.Management.PaySchedule.json.js.map +1 -1
  139. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js +20 -12
  140. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js.map +1 -1
  141. package/dist/i18n/en/Payroll.PayrollHistory.json.js +1 -1
  142. package/dist/i18n/en/Payroll.PayrollList.json.js +5 -5
  143. package/dist/package.json.js +1 -1
  144. package/dist/shared/constants.js +5 -5
  145. package/dist/shared/constants.js.map +1 -1
  146. package/dist/src/components/Common/DateRangeFilter/DateRangeFilter.d.ts +2 -2
  147. package/dist/src/components/Common/OnboardingStatusBadge/index.d.ts +1 -1
  148. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/AutoPilotDialog.d.ts +1 -1
  149. package/dist/src/components/Company/PaySchedule/management/AutoPilotDialog/useAutoPilotDialog.d.ts +1 -1
  150. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentCompensationStepPresentation.d.ts +10 -3
  151. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentDepartmentStepPresentation.d.ts +21 -0
  152. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentEmployeeStepPresentation.d.ts +34 -0
  153. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.d.ts +9 -3
  154. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.d.ts +5 -1
  155. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.d.ts +10 -10
  156. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.d.ts +12 -4
  157. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/departmentAccess.d.ts +19 -0
  158. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/employeeJob.d.ts +17 -0
  159. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/scheduleLabel.d.ts +1 -1
  160. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/useAssignableEmployees.d.ts +34 -0
  161. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/usePayScheduleAssignment.d.ts +16 -3
  162. package/dist/src/components/Company/PaySchedule/management/PayScheduleCompensationOverviewPresentation.d.ts +1 -1
  163. package/dist/src/components/Company/PaySchedule/management/PayScheduleDepartmentOverviewPresentation.d.ts +23 -0
  164. package/dist/src/components/Company/PaySchedule/management/PayScheduleEmployeeOverviewPresentation.d.ts +25 -0
  165. package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +1 -1
  166. package/dist/src/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.d.ts +1 -1
  167. package/dist/src/components/Company/PaySchedule/shared/usePayScheduleForm/usePayScheduleForm.d.ts +1 -1
  168. package/dist/src/components/Contractor/Landing/Landing.d.ts +5 -2
  169. package/dist/src/components/Employee/Landing/Landing.d.ts +5 -2
  170. package/dist/src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +1 -1
  171. package/dist/src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +1 -1
  172. package/dist/src/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +1 -1
  173. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.d.ts +2 -2
  174. package/dist/src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.d.ts +1 -1
  175. package/dist/src/components/Payroll/PayrollList/PayrollListPresentation.d.ts +2 -2
  176. package/dist/src/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +1 -1
  177. package/dist/src/components/Payroll/helpers.d.ts +2 -2
  178. package/dist/src/components/Payroll/usePreparedPayrollData.d.ts +2 -2
  179. package/dist/src/i18n/types.d.ts +82 -4
  180. package/dist/src/models/external.d.ts +63 -48
  181. package/dist/src/shared/constants.d.ts +1 -1
  182. package/docs/guides/endpoint-inventory.json +33 -13
  183. package/package.json +18 -18
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollHistoryPresentation.js","sources":["../../../../src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { Payroll } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { WireInRequest } from '@gusto/embedded-api/models/components/wireinrequest'\nimport { PayrollStatusBadges } from '../PayrollStatusBadges'\nimport {\n getPayrollTypeLabel,\n calculateTotalPayroll,\n canCancelPayroll,\n getCancelDeadlineValues,\n getPayPeriodOrCheckDateLabel,\n} from '../helpers'\nimport type { MenuItem } from '@/components/Common/UI/Menu/MenuTypes'\nimport { DataView, Flex, DateRangeFilter } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { useI18n } from '@/i18n'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport type { UseDateRangeFilterResult } from '@/hooks/useDateRangeFilter/useDateRangeFilter'\nimport TrashcanIcon from '@/assets/icons/trashcan.svg?react'\nimport FileIcon from '@/assets/icons/icon-file-outline.svg?react'\nimport ReceiptIcon from '@/assets/icons/icon-receipt-outline.svg?react'\nimport { EmptyData } from '@/components/Common/'\n\ninterface PayrollHistoryPresentationProps {\n /** CSS class name applied to the root element. */\n className?: string\n payrollHistory: Payroll[]\n wireInRequests: WireInRequest[]\n pagination: PaginationControlProps\n onViewSummary: (payrollId: string, startDate?: string, endDate?: string) => void\n onViewReceipt: (payrollId: string, startDate?: string, endDate?: string) => void\n onCancelPayroll: (item: Payroll) => void\n cancelDialogItem: Payroll | null\n onCancelDialogOpen: (item: Payroll) => void\n onCancelDialogClose: () => void\n isLoading?: boolean\n dateRangeFilter: UseDateRangeFilterResult\n}\n\n/** @internal */\nexport const PayrollHistoryPresentation = ({\n className,\n payrollHistory,\n wireInRequests,\n pagination,\n onViewSummary,\n onViewReceipt,\n onCancelPayroll,\n cancelDialogItem,\n onCancelDialogOpen,\n onCancelDialogClose,\n isLoading = false,\n dateRangeFilter,\n}: PayrollHistoryPresentationProps) => {\n const { Heading, Text, Dialog } = useComponentContext()\n useI18n('Payroll.PayrollHistory')\n const { t } = useTranslation('Payroll.PayrollHistory')\n const dateFormatter = useDateFormatter()\n\n const handleCancelClick = (item: Payroll) => {\n onCancelDialogOpen(item)\n }\n\n const handleConfirmCancel = () => {\n if (cancelDialogItem) {\n onCancelPayroll(cancelDialogItem)\n }\n }\n\n const getMenuItems = (item: Payroll): MenuItem[] => {\n const payrollId = item.payrollUuid || item.uuid!\n const items: MenuItem[] = [\n {\n label: t('menu.viewSummary'),\n icon: <FileIcon aria-hidden />,\n onClick: () => {\n onViewSummary(\n payrollId,\n item.payPeriod?.startDate ?? undefined,\n item.payPeriod?.endDate ?? undefined,\n )\n },\n },\n {\n label: t('menu.viewReceipt'),\n icon: <ReceiptIcon aria-hidden />,\n onClick: () => {\n onViewReceipt(\n payrollId,\n item.payPeriod?.startDate ?? undefined,\n item.payPeriod?.endDate ?? undefined,\n )\n },\n },\n ]\n\n if (canCancelPayroll(item)) {\n items.push({\n label: t('menu.cancelPayroll'),\n icon: <TrashcanIcon aria-hidden />,\n onClick: () => {\n handleCancelClick(item)\n },\n 'data-destructive': 'true',\n })\n }\n\n return items\n }\n\n return (\n <Flex className={className} flexDirection=\"column\" gap={16}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Heading as=\"h2\">{t('title')}</Heading>\n <DateRangeFilter\n startDate={dateRangeFilter.startDate}\n endDate={dateRangeFilter.endDate}\n onStartDateChange={dateRangeFilter.handleStartDateChange}\n onEndDateChange={dateRangeFilter.handleEndDateChange}\n onClear={dateRangeFilter.handleClearFilter}\n startDateLabel={t('dateFilter.startDate')}\n endDateLabel={t('dateFilter.endDate')}\n applyLabel={t('dateFilter.apply')}\n cancelLabel={t('dateFilter.cancel')}\n resetLabel={t('dateFilter.reset')}\n selectDatesLabel={t('dateFilter.selectDates')}\n triggerLabel={t('dateFilter.trigger')}\n maxEndDate={dateRangeFilter.getMaxEndDate()}\n minStartDate={dateRangeFilter.getMinStartDate()}\n />\n </Flex>\n\n <DataView\n label={t('dataView.label')}\n pagination={pagination}\n isFetching={pagination.isFetching}\n emptyState={() =>\n dateRangeFilter.isModified ? (\n <EmptyData\n title={t('emptyState.filtered.title')}\n description={t('emptyState.filtered.description')}\n />\n ) : (\n <EmptyData\n title={t('emptyState.default.title')}\n description={t('emptyState.default.description')}\n />\n )\n }\n columns={[\n {\n title: t('columns.payPeriod'),\n render: (item: Payroll) => getPayPeriodOrCheckDateLabel(item, dateFormatter),\n },\n {\n title: t('columns.type'),\n render: (item: Payroll) => getPayrollTypeLabel(item),\n },\n {\n title: t('columns.payDate'),\n render: (item: Payroll) => dateFormatter.formatShortWithYear(item.checkDate),\n },\n {\n title: t('columns.status'),\n render: (item: Payroll) => {\n const wireInRequest = wireInRequests.find(\n wire => wire.paymentUuid === item.payrollUuid,\n )\n return <PayrollStatusBadges payroll={item} wireInRequest={wireInRequest} />\n },\n },\n {\n title: t('columns.totalPayroll'),\n justify: 'end',\n render: (item: Payroll) => formatNumberAsCurrency(calculateTotalPayroll(item)),\n },\n ]}\n data={payrollHistory}\n itemMenu={(item: Payroll) => <HamburgerMenu items={getMenuItems(item)} />}\n />\n\n <Dialog\n isOpen={!!cancelDialogItem}\n onClose={onCancelDialogClose}\n onPrimaryActionClick={handleConfirmCancel}\n isDestructive\n isPrimaryActionLoading={isLoading}\n primaryActionLabel={t('cancelDialog.primaryAction')}\n closeActionLabel={t('cancelDialog.secondaryAction')}\n title={\n cancelDialogItem\n ? t('cancelDialog.title', {\n payPeriod: getPayPeriodOrCheckDateLabel(cancelDialogItem, dateFormatter),\n })\n : ''\n }\n >\n {cancelDialogItem && (\n <Flex flexDirection=\"column\" gap={16}>\n <Text>{t('cancelDialog.body')}</Text>\n {cancelDialogItem.payrollDeadline && (\n <Text>\n {t(\n 'cancelDialog.deadline',\n getCancelDeadlineValues(cancelDialogItem, dateFormatter),\n )}\n </Text>\n )}\n </Flex>\n )}\n </Dialog>\n </Flex>\n )\n}\n"],"names":["PayrollHistoryPresentation","className","payrollHistory","wireInRequests","pagination","onViewSummary","onViewReceipt","onCancelPayroll","cancelDialogItem","onCancelDialogOpen","onCancelDialogClose","isLoading","dateRangeFilter","Heading","Text","Dialog","useComponentContext","useI18n","t","useTranslation","dateFormatter","useDateFormatter","handleCancelClick","item","handleConfirmCancel","getMenuItems","payrollId","items","jsx","FileIcon","ReceiptIcon","canCancelPayroll","TrashcanIcon","Flex","jsxs","DateRangeFilter","DataView","EmptyData","getPayPeriodOrCheckDateLabel","getPayrollTypeLabel","wireInRequest","wire","PayrollStatusBadges","formatNumberAsCurrency","calculateTotalPayroll","HamburgerMenu","getCancelDeadlineValues"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollHistoryPresentation.js","sources":["../../../../src/components/Payroll/PayrollHistory/PayrollHistoryPresentation.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { Payroll } from '@gusto/embedded-api/models/components/unprocessedpayroll'\nimport type { WireInRequest } from '@gusto/embedded-api/models/components/wireinrequest'\nimport { PayrollStatusBadges } from '../PayrollStatusBadges'\nimport {\n getPayrollTypeLabel,\n calculateTotalPayroll,\n canCancelPayroll,\n getCancelDeadlineValues,\n getPayPeriodOrCheckDateLabel,\n} from '../helpers'\nimport type { MenuItem } from '@/components/Common/UI/Menu/MenuTypes'\nimport { DataView, Flex, DateRangeFilter } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport { formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { useI18n } from '@/i18n'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport type { UseDateRangeFilterResult } from '@/hooks/useDateRangeFilter/useDateRangeFilter'\nimport TrashcanIcon from '@/assets/icons/trashcan.svg?react'\nimport FileIcon from '@/assets/icons/icon-file-outline.svg?react'\nimport ReceiptIcon from '@/assets/icons/icon-receipt-outline.svg?react'\nimport { EmptyData } from '@/components/Common/'\n\ninterface PayrollHistoryPresentationProps {\n /** CSS class name applied to the root element. */\n className?: string\n payrollHistory: Payroll[]\n wireInRequests: WireInRequest[]\n pagination: PaginationControlProps\n onViewSummary: (payrollId: string, startDate?: string, endDate?: string) => void\n onViewReceipt: (payrollId: string, startDate?: string, endDate?: string) => void\n onCancelPayroll: (item: Payroll) => void\n cancelDialogItem: Payroll | null\n onCancelDialogOpen: (item: Payroll) => void\n onCancelDialogClose: () => void\n isLoading?: boolean\n dateRangeFilter: UseDateRangeFilterResult\n}\n\n/** @internal */\nexport const PayrollHistoryPresentation = ({\n className,\n payrollHistory,\n wireInRequests,\n pagination,\n onViewSummary,\n onViewReceipt,\n onCancelPayroll,\n cancelDialogItem,\n onCancelDialogOpen,\n onCancelDialogClose,\n isLoading = false,\n dateRangeFilter,\n}: PayrollHistoryPresentationProps) => {\n const { Heading, Text, Dialog } = useComponentContext()\n useI18n('Payroll.PayrollHistory')\n const { t } = useTranslation('Payroll.PayrollHistory')\n const dateFormatter = useDateFormatter()\n\n const handleCancelClick = (item: Payroll) => {\n onCancelDialogOpen(item)\n }\n\n const handleConfirmCancel = () => {\n if (cancelDialogItem) {\n onCancelPayroll(cancelDialogItem)\n }\n }\n\n const getMenuItems = (item: Payroll): MenuItem[] => {\n const payrollId = item.payrollUuid || item.uuid!\n const items: MenuItem[] = [\n {\n label: t('menu.viewSummary'),\n icon: <FileIcon aria-hidden />,\n onClick: () => {\n onViewSummary(\n payrollId,\n item.payPeriod?.startDate ?? undefined,\n item.payPeriod?.endDate ?? undefined,\n )\n },\n },\n {\n label: t('menu.viewReceipt'),\n icon: <ReceiptIcon aria-hidden />,\n onClick: () => {\n onViewReceipt(\n payrollId,\n item.payPeriod?.startDate ?? undefined,\n item.payPeriod?.endDate ?? undefined,\n )\n },\n },\n ]\n\n if (canCancelPayroll(item)) {\n items.push({\n label: t('menu.cancelPayroll'),\n icon: <TrashcanIcon aria-hidden />,\n onClick: () => {\n handleCancelClick(item)\n },\n 'data-destructive': 'true',\n })\n }\n\n return items\n }\n\n return (\n <Flex className={className} flexDirection=\"column\" gap={16}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Heading as=\"h2\">{t('title')}</Heading>\n <DateRangeFilter\n startDate={dateRangeFilter.startDate}\n endDate={dateRangeFilter.endDate}\n onStartDateChange={dateRangeFilter.handleStartDateChange}\n onEndDateChange={dateRangeFilter.handleEndDateChange}\n onClear={dateRangeFilter.handleClearFilter}\n startDateLabel={t('dateFilter.startDate')}\n endDateLabel={t('dateFilter.endDate')}\n applyLabel={t('dateFilter.apply')}\n cancelLabel={t('dateFilter.cancel')}\n resetLabel={t('dateFilter.reset')}\n selectDatesLabel={t('dateFilter.selectDates')}\n getTriggerLabel={selection => t('dateFilter.triggerLabel', { selection })}\n maxEndDate={dateRangeFilter.getMaxEndDate()}\n minStartDate={dateRangeFilter.getMinStartDate()}\n />\n </Flex>\n\n <DataView\n label={t('dataView.label')}\n pagination={pagination}\n isFetching={pagination.isFetching}\n emptyState={() =>\n dateRangeFilter.isModified ? (\n <EmptyData\n title={t('emptyState.filtered.title')}\n description={t('emptyState.filtered.description')}\n />\n ) : (\n <EmptyData\n title={t('emptyState.default.title')}\n description={t('emptyState.default.description')}\n />\n )\n }\n columns={[\n {\n title: t('columns.payPeriod'),\n render: (item: Payroll) => getPayPeriodOrCheckDateLabel(item, dateFormatter),\n },\n {\n title: t('columns.type'),\n render: (item: Payroll) => getPayrollTypeLabel(item),\n },\n {\n title: t('columns.payDate'),\n render: (item: Payroll) => dateFormatter.formatShortWithYear(item.checkDate),\n },\n {\n title: t('columns.status'),\n render: (item: Payroll) => {\n const wireInRequest = wireInRequests.find(\n wire => wire.paymentUuid === item.payrollUuid,\n )\n return <PayrollStatusBadges payroll={item} wireInRequest={wireInRequest} />\n },\n },\n {\n title: t('columns.totalPayroll'),\n justify: 'end',\n render: (item: Payroll) => formatNumberAsCurrency(calculateTotalPayroll(item)),\n },\n ]}\n data={payrollHistory}\n itemMenu={(item: Payroll) => <HamburgerMenu items={getMenuItems(item)} />}\n />\n\n <Dialog\n isOpen={!!cancelDialogItem}\n onClose={onCancelDialogClose}\n onPrimaryActionClick={handleConfirmCancel}\n isDestructive\n isPrimaryActionLoading={isLoading}\n primaryActionLabel={t('cancelDialog.primaryAction')}\n closeActionLabel={t('cancelDialog.secondaryAction')}\n title={\n cancelDialogItem\n ? t('cancelDialog.title', {\n payPeriod: getPayPeriodOrCheckDateLabel(cancelDialogItem, dateFormatter),\n })\n : ''\n }\n >\n {cancelDialogItem && (\n <Flex flexDirection=\"column\" gap={16}>\n <Text>{t('cancelDialog.body')}</Text>\n {cancelDialogItem.payrollDeadline && (\n <Text>\n {t(\n 'cancelDialog.deadline',\n getCancelDeadlineValues(cancelDialogItem, dateFormatter),\n )}\n </Text>\n )}\n </Flex>\n )}\n </Dialog>\n </Flex>\n )\n}\n"],"names":["PayrollHistoryPresentation","className","payrollHistory","wireInRequests","pagination","onViewSummary","onViewReceipt","onCancelPayroll","cancelDialogItem","onCancelDialogOpen","onCancelDialogClose","isLoading","dateRangeFilter","Heading","Text","Dialog","useComponentContext","useI18n","t","useTranslation","dateFormatter","useDateFormatter","handleCancelClick","item","handleConfirmCancel","getMenuItems","payrollId","items","jsx","FileIcon","ReceiptIcon","canCancelPayroll","TrashcanIcon","Flex","jsxs","DateRangeFilter","selection","DataView","EmptyData","getPayPeriodOrCheckDateLabel","getPayrollTypeLabel","wireInRequest","wire","PayrollStatusBadges","formatNumberAsCurrency","calculateTotalPayroll","HamburgerMenu","getCancelDeadlineValues"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollList.js","sources":["../../../../src/components/Payroll/PayrollList/PayrollList.tsx"],"sourcesContent":["import { useState, useCallback } from 'react'\nimport { useQueryClient, keepPreviousData } from '@tanstack/react-query'\nimport {\n usePayrollsList,\n invalidateAllPayrollsList,\n} from '@gusto/embedded-api/react-query/payrollsList'\nimport { usePaySchedulesGetAllSuspense } from '@gusto/embedded-api/react-query/paySchedulesGetAll'\nimport { usePayrollsSkipMutation } from '@gusto/embedded-api/react-query/payrollsSkip'\nimport { usePayrollsDeleteMutation } from '@gusto/embedded-api/react-query/payrollsDelete'\nimport { usePayrollsGetBlockersSuspense } from '@gusto/embedded-api/react-query/payrollsGetBlockers'\nimport { useWireInRequestsListSuspense } from '@gusto/embedded-api/react-query/wireInRequestsList'\nimport { PayrollType } from '@gusto/embedded-api/models/operations/postcompaniespayrollskipcompanyuuid'\nimport {\n ProcessingStatuses,\n QueryParamPayrollTypes,\n} from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls'\nimport type { Payroll } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { useUnprocessedTransitionPayPeriods } from '../useUnprocessedTransitionPayPeriods'\nimport { PayrollListPresentation } from './PayrollListPresentation'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { BaseComponent, BaseLayout, useBase } from '@/components/Base'\nimport { componentEvents } from '@/shared/constants'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\nimport { useDateRangeFilter } from '@/hooks/useDateRangeFilter/useDateRangeFilter'\n\n/**\n * Props for {@link PayrollList}.\n *\n * @public\n */\nexport interface PayrollListBlockProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n /** Whether to show the off-cycle payroll call-to-action. Defaults to `true`. */\n withOffcyclePayroll?: boolean\n}\n\n/**\n * Lists upcoming payrolls and lets users start running them.\n *\n * Displays available payrolls with pay period dates, payroll type, check date,\n * deadline, and status. Each row offers actions to run, submit a calculated\n * payroll, skip, or delete (for cancellable off-cycle payrolls). A separate\n * call-to-action starts an off-cycle payroll.\n *\n * @remarks\n * When the company has unprocessed transition pay periods within the next\n * 90 days, the Run Payroll action on Regular rows is disabled to prevent a\n * regular payroll from being run before the transition is resolved. Off-cycle\n * rows and the Run off-cycle action remain enabled, since off-cycle is the\n * path used to run a transition payroll. {@link PayrollLanding} pairs this\n * list with an alert that lets users run or skip the pending transition; when\n * using `PayrollList` directly, render an equivalent resolution surface\n * alongside it.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/selected` | User selected a payroll to run | `{ payrollUuid, payPeriod }` |\n * | `payroll/review` | User selected a calculated payroll to review and submit | `{ payrollUuid, payPeriod }` |\n * | `payroll/skipped` | A payroll was successfully skipped | `{ payrollId }` |\n * | `payroll/deleted` | A cancellable off-cycle payroll was successfully deleted | `{ payrollId }` |\n * | `runPayroll/offCycle/start` | User clicked the Run off-cycle call-to-action | — |\n *\n * @param props - See {@link PayrollListBlockProps}.\n * @returns The rendered payroll list.\n * @public\n */\nexport function PayrollList(props: PayrollListBlockProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nconst FUTURE_LOOKAHEAD_MONTHS = 3\n\nconst getDefaultStartDate = (): Date => new Date()\n\nconst getDefaultEndDate = (): Date => {\n const date = new Date()\n date.setMonth(date.getMonth() + FUTURE_LOOKAHEAD_MONTHS)\n return date\n}\n\nconst Root = ({\n companyId,\n onEvent,\n withOffcyclePayroll = true,\n LoaderComponent,\n className,\n}: PayrollListBlockProps) => {\n const { baseSubmitHandler } = useBase()\n const queryClient = useQueryClient()\n const [showSkipSuccessAlert, setShowSkipSuccessAlert] = useState(false)\n const [skippingPayrollId, setSkippingPayrollId] = useState<string | null>(null)\n const { currentPage, itemsPerPage, getPaginationProps, resetPage } = usePagination()\n const [showDeleteSuccessAlert, setShowDeleteSuccessAlert] = useState(false)\n const [deletingPayrollId, setDeletingPayrollId] = useState<string | null>(null)\n\n const dateRangeFilter = useDateRangeFilter({\n initialStartDate: getDefaultStartDate(),\n initialEndDate: getDefaultEndDate(),\n onFilterChange: useCallback(() => {\n resetPage()\n }, [resetPage]),\n })\n const dateFilterParams = dateRangeFilter.getApiDateParams()\n\n const { data: payrollsData, isFetching } = usePayrollsList(\n {\n companyId,\n processingStatuses: [ProcessingStatuses.Unprocessed],\n startDate: dateFilterParams.startDate,\n endDate: dateFilterParams.endDate,\n payrollTypes: [QueryParamPayrollTypes.Regular, QueryParamPayrollTypes.OffCycle],\n includeOffCycle: true,\n page: currentPage,\n per: itemsPerPage,\n },\n { placeholderData: keepPreviousData, throwOnError: true },\n )\n const payrollList = payrollsData?.payrollList ?? []\n const { data: paySchedulesData } = usePaySchedulesGetAllSuspense({\n companyId,\n })\n const paySchedulesList = paySchedulesData.payScheduleShowResponse!\n\n const { data: blockersData } = usePayrollsGetBlockersSuspense({\n companyUuid: companyId,\n })\n\n const payrollBlockerList = blockersData.payrollBlockers ?? []\n\n const blockers: ApiPayrollBlocker[] = payrollBlockerList.map(\n (blocker: { key?: string; message?: string }) => ({\n key: blocker.key ?? 'unknown',\n message: blocker.message,\n }),\n )\n\n const { data: wireInRequestsData } = useWireInRequestsListSuspense({\n companyUuid: companyId,\n })\n\n const wireInRequests = wireInRequestsData.wireInRequestList ?? []\n\n const { hasUnprocessedTransitions } = useUnprocessedTransitionPayPeriods(companyId)\n\n const { mutateAsync: skipPayroll } = usePayrollsSkipMutation()\n const { mutateAsync: deletePayrollMutation } = usePayrollsDeleteMutation()\n\n const onRunPayroll = ({ payrollUuid, payPeriod }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => {\n onEvent(componentEvents.RUN_PAYROLL_SELECTED, { payrollUuid, payPeriod })\n }\n const onRunOffCyclePayroll = () => {\n onEvent(componentEvents.RUN_OFF_CYCLE_PAYROLL)\n }\n const onSubmitPayroll = ({\n payrollUuid,\n payPeriod,\n }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => {\n onEvent(componentEvents.REVIEW_PAYROLL, { payrollUuid, payPeriod })\n }\n const onSkipPayroll = async ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => {\n const payroll = payrollList.find(payroll => payroll.payrollUuid === payrollUuid)\n\n if (payroll?.payPeriod) {\n setSkippingPayrollId(payrollUuid!)\n const payrollType =\n payroll.offCycleReason === 'Transition from old pay schedule'\n ? PayrollType.TransitionFromOldPaySchedule\n : PayrollType.Regular\n\n await baseSubmitHandler({}, async () => {\n await skipPayroll({\n request: {\n companyUuid: companyId,\n requestBody: {\n payrollType,\n startDate: payroll.payPeriod?.startDate ?? undefined,\n endDate: payroll.payPeriod?.endDate ?? undefined,\n payScheduleUuid: payroll.payPeriod?.payScheduleUuid ?? undefined,\n },\n },\n })\n\n setShowSkipSuccessAlert(true)\n onEvent(componentEvents.PAYROLL_SKIPPED, { payrollId: payrollUuid })\n })\n setSkippingPayrollId(null)\n }\n }\n\n const onDeletePayroll = async ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => {\n if (payrollUuid) {\n setDeletingPayrollId(payrollUuid)\n await baseSubmitHandler({}, async () => {\n await deletePayrollMutation({\n request: { companyId, payrollId: payrollUuid },\n })\n await invalidateAllPayrollsList(queryClient)\n setShowDeleteSuccessAlert(true)\n onEvent(componentEvents.PAYROLL_DELETED, { payrollId: payrollUuid })\n })\n setDeletingPayrollId(null)\n }\n }\n\n if (!payrollsData) {\n return <BaseLayout isLoading LoaderComponent={LoaderComponent} />\n }\n\n const paginationProps = getPaginationProps(payrollsData.httpMeta.response.headers, isFetching)\n\n return (\n <PayrollListPresentation\n className={className}\n payrolls={payrollList}\n pagination={paginationProps}\n paySchedules={paySchedulesList}\n onRunPayroll={onRunPayroll}\n onSubmitPayroll={onSubmitPayroll}\n onSkipPayroll={onSkipPayroll}\n onDeletePayroll={onDeletePayroll}\n onRunOffCyclePayroll={onRunOffCyclePayroll}\n showSkipSuccessAlert={showSkipSuccessAlert}\n onDismissSkipSuccessAlert={() => {\n setShowSkipSuccessAlert(false)\n }}\n showDeleteSuccessAlert={showDeleteSuccessAlert}\n onDismissDeleteSuccessAlert={() => {\n setShowDeleteSuccessAlert(false)\n }}\n skippingPayrollId={skippingPayrollId}\n deletingPayrollId={deletingPayrollId}\n blockers={blockers}\n wireInRequests={wireInRequests}\n dateRangeFilter={dateRangeFilter}\n hasUnprocessedTransitions={hasUnprocessedTransitions}\n withOffcyclePayroll={withOffcyclePayroll}\n />\n )\n}\n"],"names":["PayrollList","props","jsx","BaseComponent","Root","FUTURE_LOOKAHEAD_MONTHS","getDefaultStartDate","getDefaultEndDate","date","companyId","onEvent","withOffcyclePayroll","LoaderComponent","className","baseSubmitHandler","useBase","queryClient","useQueryClient","showSkipSuccessAlert","setShowSkipSuccessAlert","useState","skippingPayrollId","setSkippingPayrollId","currentPage","itemsPerPage","getPaginationProps","resetPage","usePagination","showDeleteSuccessAlert","setShowDeleteSuccessAlert","deletingPayrollId","setDeletingPayrollId","dateRangeFilter","useDateRangeFilter","useCallback","dateFilterParams","payrollsData","isFetching","usePayrollsList","ProcessingStatuses","QueryParamPayrollTypes","keepPreviousData","payrollList","paySchedulesData","usePaySchedulesGetAllSuspense","paySchedulesList","blockersData","usePayrollsGetBlockersSuspense","blockers","blocker","wireInRequestsData","useWireInRequestsListSuspense","wireInRequests","hasUnprocessedTransitions","useUnprocessedTransitionPayPeriods","skipPayroll","usePayrollsSkipMutation","deletePayrollMutation","usePayrollsDeleteMutation","onRunPayroll","payrollUuid","payPeriod","componentEvents","onRunOffCyclePayroll","onSubmitPayroll","onSkipPayroll","payroll","payrollType","PayrollType","onDeletePayroll","invalidateAllPayrollsList","BaseLayout","paginationProps","PayrollListPresentation"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollList.js","sources":["../../../../src/components/Payroll/PayrollList/PayrollList.tsx"],"sourcesContent":["import { useState, useCallback } from 'react'\nimport { useQueryClient, keepPreviousData } from '@tanstack/react-query'\nimport {\n usePayrollsList,\n invalidateAllPayrollsList,\n} from '@gusto/embedded-api/react-query/payrollsList'\nimport { usePaySchedulesGetAllSuspense } from '@gusto/embedded-api/react-query/paySchedulesGetAll'\nimport { usePayrollsSkipMutation } from '@gusto/embedded-api/react-query/payrollsSkip'\nimport { usePayrollsDeleteMutation } from '@gusto/embedded-api/react-query/payrollsDelete'\nimport { usePayrollsGetBlockersSuspense } from '@gusto/embedded-api/react-query/payrollsGetBlockers'\nimport { useWireInRequestsListSuspense } from '@gusto/embedded-api/react-query/wireInRequestsList'\nimport { PayrollType } from '@gusto/embedded-api/models/operations/postcompaniespayrollskipcompanyuuid'\nimport {\n ProcessingStatuses,\n QueryParamPayrollTypes,\n} from '@gusto/embedded-api/models/operations/getv1companiescompanyidpayrolls'\nimport type { Payroll } from '@gusto/embedded-api/models/components/unprocessedpayroll'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { useUnprocessedTransitionPayPeriods } from '../useUnprocessedTransitionPayPeriods'\nimport { PayrollListPresentation } from './PayrollListPresentation'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { BaseComponent, BaseLayout, useBase } from '@/components/Base'\nimport { componentEvents } from '@/shared/constants'\nimport { usePagination } from '@/hooks/usePagination/usePagination'\nimport { useDateRangeFilter } from '@/hooks/useDateRangeFilter/useDateRangeFilter'\n\n/**\n * Props for {@link PayrollList}.\n *\n * @public\n */\nexport interface PayrollListBlockProps extends BaseComponentInterface<never> {\n /** The associated company identifier. */\n companyId: string\n /** Whether to show the off-cycle payroll call-to-action. Defaults to `true`. */\n withOffcyclePayroll?: boolean\n}\n\n/**\n * Lists upcoming payrolls and lets users start running them.\n *\n * Displays available payrolls with pay period dates, payroll type, check date,\n * deadline, and status. Each row offers actions to run, submit a calculated\n * payroll, skip, or delete (for cancellable off-cycle payrolls). A separate\n * call-to-action starts an off-cycle payroll.\n *\n * @remarks\n * When the company has unprocessed transition pay periods within the next\n * 90 days, the Run Payroll action on Regular rows is disabled to prevent a\n * regular payroll from being run before the transition is resolved. Off-cycle\n * rows and the Run off-cycle action remain enabled, since off-cycle is the\n * path used to run a transition payroll. {@link PayrollLanding} pairs this\n * list with an alert that lets users run or skip the pending transition; when\n * using `PayrollList` directly, render an equivalent resolution surface\n * alongside it.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `runPayroll/selected` | User selected a payroll to run | `{ payrollUuid, payPeriod }` |\n * | `payroll/review` | User selected a calculated payroll to review and submit | `{ payrollUuid, payPeriod }` |\n * | `payroll/skipped` | A payroll was successfully skipped | `{ payrollId }` |\n * | `payroll/deleted` | A cancellable off-cycle payroll was successfully deleted | `{ payrollId }` |\n * | `runPayroll/offCycle/start` | User clicked the Run off-cycle call-to-action | — |\n *\n * @param props - See {@link PayrollListBlockProps}.\n * @returns The rendered payroll list.\n * @public\n */\nexport function PayrollList(props: PayrollListBlockProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nconst FUTURE_LOOKAHEAD_MONTHS = 3\n\nconst getDefaultStartDate = (): Date => new Date()\n\nconst getDefaultEndDate = (): Date => {\n const date = new Date()\n date.setMonth(date.getMonth() + FUTURE_LOOKAHEAD_MONTHS)\n return date\n}\n\nconst Root = ({\n companyId,\n onEvent,\n withOffcyclePayroll = true,\n LoaderComponent,\n className,\n}: PayrollListBlockProps) => {\n const { baseSubmitHandler } = useBase()\n const queryClient = useQueryClient()\n const [showSkipSuccessAlert, setShowSkipSuccessAlert] = useState(false)\n const [skippingPayrollId, setSkippingPayrollId] = useState<string | null>(null)\n const { currentPage, itemsPerPage, getPaginationProps, resetPage } = usePagination()\n const [showDeleteSuccessAlert, setShowDeleteSuccessAlert] = useState(false)\n const [deletingPayrollId, setDeletingPayrollId] = useState<string | null>(null)\n\n const dateRangeFilter = useDateRangeFilter({\n initialStartDate: getDefaultStartDate(),\n initialEndDate: getDefaultEndDate(),\n onFilterChange: useCallback(() => {\n resetPage()\n }, [resetPage]),\n })\n const dateFilterParams = dateRangeFilter.getApiDateParams()\n\n const { data: payrollsData, isFetching } = usePayrollsList(\n {\n companyId,\n processingStatuses: [ProcessingStatuses.Unprocessed],\n startDate: dateFilterParams.startDate,\n endDate: dateFilterParams.endDate,\n payrollTypes: [QueryParamPayrollTypes.Regular, QueryParamPayrollTypes.OffCycle],\n includeOffCycle: true,\n page: currentPage,\n per: itemsPerPage,\n },\n { placeholderData: keepPreviousData, throwOnError: true },\n )\n const payrollList = payrollsData?.payrollList ?? []\n const { data: paySchedulesData } = usePaySchedulesGetAllSuspense({\n companyId,\n })\n const paySchedulesList = paySchedulesData.payScheduleShowResponse!\n\n const { data: blockersData } = usePayrollsGetBlockersSuspense({\n companyUuid: companyId,\n })\n\n const payrollBlockerList = blockersData.payrollBlockers ?? []\n\n const blockers: ApiPayrollBlocker[] = payrollBlockerList.map(\n (blocker: { key?: string; message?: string }) => ({\n key: blocker.key ?? 'unknown',\n message: blocker.message,\n }),\n )\n\n const { data: wireInRequestsData } = useWireInRequestsListSuspense({\n companyUuid: companyId,\n })\n\n const wireInRequests = wireInRequestsData.wireInRequestList ?? []\n\n const { hasUnprocessedTransitions } = useUnprocessedTransitionPayPeriods(companyId)\n\n const { mutateAsync: skipPayroll } = usePayrollsSkipMutation()\n const { mutateAsync: deletePayrollMutation } = usePayrollsDeleteMutation()\n\n const onRunPayroll = ({ payrollUuid, payPeriod }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => {\n onEvent(componentEvents.RUN_PAYROLL_SELECTED, { payrollUuid, payPeriod })\n }\n const onRunOffCyclePayroll = () => {\n onEvent(componentEvents.RUN_OFF_CYCLE_PAYROLL)\n }\n const onSubmitPayroll = ({\n payrollUuid,\n payPeriod,\n }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => {\n onEvent(componentEvents.REVIEW_PAYROLL, { payrollUuid, payPeriod })\n }\n const onSkipPayroll = async ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => {\n const payroll = payrollList.find(payroll => payroll.payrollUuid === payrollUuid)\n\n if (payroll?.payPeriod) {\n setSkippingPayrollId(payrollUuid!)\n const payrollType =\n payroll.offCycleReason === 'Transition from old pay schedule'\n ? PayrollType.TransitionFromOldPaySchedule\n : PayrollType.Regular\n\n await baseSubmitHandler({}, async () => {\n await skipPayroll({\n request: {\n companyUuid: companyId,\n requestBody: {\n payrollType,\n startDate: payroll.payPeriod?.startDate ?? undefined,\n endDate: payroll.payPeriod?.endDate ?? undefined,\n payScheduleUuid: payroll.payPeriod?.payScheduleUuid ?? undefined,\n },\n },\n })\n\n setShowSkipSuccessAlert(true)\n onEvent(componentEvents.PAYROLL_SKIPPED, { payrollId: payrollUuid })\n })\n setSkippingPayrollId(null)\n }\n }\n\n const onDeletePayroll = async ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => {\n if (payrollUuid) {\n setDeletingPayrollId(payrollUuid)\n await baseSubmitHandler({}, async () => {\n await deletePayrollMutation({\n request: { companyId, payrollId: payrollUuid },\n })\n await invalidateAllPayrollsList(queryClient)\n setShowDeleteSuccessAlert(true)\n onEvent(componentEvents.PAYROLL_DELETED, { payrollId: payrollUuid })\n })\n setDeletingPayrollId(null)\n }\n }\n\n if (!payrollsData) {\n return <BaseLayout isLoading LoaderComponent={LoaderComponent} />\n }\n\n const paginationProps = getPaginationProps(payrollsData.httpMeta.response.headers, isFetching)\n\n return (\n <PayrollListPresentation\n className={className}\n payrolls={payrollList}\n pagination={paginationProps}\n paySchedules={paySchedulesList}\n onRunPayroll={onRunPayroll}\n onSubmitPayroll={onSubmitPayroll}\n onSkipPayroll={onSkipPayroll}\n onDeletePayroll={onDeletePayroll}\n onRunOffCyclePayroll={onRunOffCyclePayroll}\n showSkipSuccessAlert={showSkipSuccessAlert}\n onDismissSkipSuccessAlert={() => {\n setShowSkipSuccessAlert(false)\n }}\n showDeleteSuccessAlert={showDeleteSuccessAlert}\n onDismissDeleteSuccessAlert={() => {\n setShowDeleteSuccessAlert(false)\n }}\n skippingPayrollId={skippingPayrollId}\n deletingPayrollId={deletingPayrollId}\n blockers={blockers}\n wireInRequests={wireInRequests}\n dateRangeFilter={dateRangeFilter}\n hasUnprocessedTransitions={hasUnprocessedTransitions}\n withOffcyclePayroll={withOffcyclePayroll}\n />\n )\n}\n"],"names":["PayrollList","props","jsx","BaseComponent","Root","FUTURE_LOOKAHEAD_MONTHS","getDefaultStartDate","getDefaultEndDate","date","companyId","onEvent","withOffcyclePayroll","LoaderComponent","className","baseSubmitHandler","useBase","queryClient","useQueryClient","showSkipSuccessAlert","setShowSkipSuccessAlert","useState","skippingPayrollId","setSkippingPayrollId","currentPage","itemsPerPage","getPaginationProps","resetPage","usePagination","showDeleteSuccessAlert","setShowDeleteSuccessAlert","deletingPayrollId","setDeletingPayrollId","dateRangeFilter","useDateRangeFilter","useCallback","dateFilterParams","payrollsData","isFetching","usePayrollsList","ProcessingStatuses","QueryParamPayrollTypes","keepPreviousData","payrollList","paySchedulesData","usePaySchedulesGetAllSuspense","paySchedulesList","blockersData","usePayrollsGetBlockersSuspense","blockers","blocker","wireInRequestsData","useWireInRequestsListSuspense","wireInRequests","hasUnprocessedTransitions","useUnprocessedTransitionPayPeriods","skipPayroll","usePayrollsSkipMutation","deletePayrollMutation","usePayrollsDeleteMutation","onRunPayroll","payrollUuid","payPeriod","componentEvents","onRunOffCyclePayroll","onSubmitPayroll","onSkipPayroll","payroll","payrollType","PayrollType","onDeletePayroll","invalidateAllPayrollsList","BaseLayout","paginationProps","PayrollListPresentation"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as a, jsxs as b } from "react/jsx-runtime";
2
- import { OffCycleReasonType as m } from "@gusto/embedded-api/models/components/payrollshow";
2
+ import { OffCycleReasonType as m } from "@gusto/embedded-api/models/components/unprocessedpayroll";
3
3
  import { useRef as pe, useMemo as q, useState as z } from "react";
4
4
  import { useTranslation as De } from "react-i18next";
5
5
  import Pe from "classnames";
@@ -51,10 +51,10 @@ const Qe = ({
51
51
  }) => {
52
52
  const { Box: re, BoxHeader: oe, Button: A, ButtonIcon: N, Dialog: E, Heading: ie, Text: ne, Alert: F } = ge();
53
53
  Se("Payroll.PayrollList");
54
- const { t } = De("Payroll.PayrollList"), d = Le(), B = pe(null), H = Ae({ ref: B }).includes("large"), p = q(() => {
54
+ const { t } = De("Payroll.PayrollList"), d = Le(), T = pe(null), B = Ae({ ref: T }).includes("large"), p = q(() => {
55
55
  const e = ke(/* @__PURE__ */ new Date());
56
56
  return e ? new Date(e) : null;
57
- }, []), T = q(
57
+ }, []), H = q(
58
58
  () => c.some((e) => ve(e, L, p)),
59
59
  [c, L, p]
60
60
  ), [D, M] = z({
@@ -131,7 +131,7 @@ const Qe = ({
131
131
  }
132
132
  );
133
133
  };
134
- return /* @__PURE__ */ a("div", { ref: B, className: Pe(n.container, o), children: /* @__PURE__ */ b(O, { flexDirection: "column", gap: 16, alignItems: "stretch", children: [
134
+ return /* @__PURE__ */ a("div", { ref: T, className: Pe(n.container, o), children: /* @__PURE__ */ b(O, { flexDirection: "column", gap: 16, alignItems: "stretch", children: [
135
135
  Q && /* @__PURE__ */ a("div", { className: n.alertContainer, children: /* @__PURE__ */ a(
136
136
  F,
137
137
  {
@@ -164,7 +164,7 @@ const Qe = ({
164
164
  cancelLabel: t("dateFilter.cancel"),
165
165
  resetLabel: t("dateFilter.reset"),
166
166
  selectDatesLabel: t("dateFilter.selectDates"),
167
- triggerLabel: t("dateFilter.trigger"),
167
+ getTriggerLabel: (e) => t("dateFilter.triggerLabel", { selection: e }),
168
168
  maxEndDate: s.getMaxEndDate(),
169
169
  minStartDate: s.getMinStartDate()
170
170
  }
@@ -221,7 +221,7 @@ const Qe = ({
221
221
  return /* @__PURE__ */ a(Oe, { payroll: e, wireInRequest: l });
222
222
  }
223
223
  },
224
- ...H ? [] : [
224
+ ...B ? [] : [
225
225
  {
226
226
  title: "",
227
227
  render: (e) => {
@@ -233,9 +233,9 @@ const Qe = ({
233
233
  ],
234
234
  label: t("payrollsListLabel"),
235
235
  itemMenu: (e) => {
236
- const { payrollUuid: l, processed: i, payPeriod: r } = e, C = v === l, h = ee === l, j = H ? Y(e) : null;
236
+ const { payrollUuid: l, processed: i, payPeriod: r } = e, C = v === l, h = ee === l, j = B ? Y(e) : null;
237
237
  if (i)
238
- return /* @__PURE__ */ a("div", { className: n.actionsContainer, children: T && /* @__PURE__ */ a(
238
+ return /* @__PURE__ */ a("div", { className: n.actionsContainer, children: H && /* @__PURE__ */ a(
239
239
  N,
240
240
  {
241
241
  "aria-label": "",
@@ -272,7 +272,7 @@ const Qe = ({
272
272
  menuLabel: t("payrollMenuLabel"),
273
273
  items: V
274
274
  }
275
- ) : T && /* @__PURE__ */ a(
275
+ ) : H && /* @__PURE__ */ a(
276
276
  N,
277
277
  {
278
278
  "aria-label": "",
@@ -1 +1 @@
1
- {"version":3,"file":"PayrollListPresentation.js","sources":["../../../../src/components/Payroll/PayrollList/PayrollListPresentation.tsx"],"sourcesContent":["import type { Payroll } from '@gusto/embedded-api/models/components/payrollshow'\nimport { OffCycleReasonType } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport type { WireInRequest } from '@gusto/embedded-api/models/components/wireinrequest'\nimport { useState, useRef, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollStatusBadges } from '../PayrollStatusBadges'\nimport { getPayrollTypeLabel } from '../helpers'\nimport styles from './PayrollListPresentation.module.scss'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport {\n DataView,\n Flex,\n HamburgerMenu,\n DateRangeFilter,\n EmptyData,\n VisuallyHidden,\n} from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport type { UseDateRangeFilterResult } from '@/hooks/useDateRangeFilter/useDateRangeFilter'\nimport { useI18n } from '@/i18n'\nimport { formatDateToStringDate } from '@/helpers/dateFormatting'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\n\nconst CANCELLABLE_OFF_CYCLE_REASONS = new Set<string>([\n OffCycleReasonType.Bonus,\n OffCycleReasonType.Correction,\n OffCycleReasonType.DismissedEmployee,\n])\n\nfunction hasKebabActions(\n payroll: Payroll,\n blockers: ApiPayrollBlocker[],\n todayAtMidnight: Date | null,\n): boolean {\n if (payroll.processed) return false\n\n const payPeriodStartDate = payroll.payPeriod?.startDate\n ? new Date(payroll.payPeriod.startDate)\n : null\n\n const isSkippablePayroll =\n !payroll.offCycle || payroll.offCycleReason === OffCycleReasonType.TransitionFromOldPaySchedule\n\n const canSkipPayroll =\n blockers.length === 0 &&\n isSkippablePayroll &&\n todayAtMidnight &&\n payPeriodStartDate &&\n todayAtMidnight >= payPeriodStartDate\n\n const canDeletePayroll =\n payroll.offCycle &&\n !!payroll.offCycleReason &&\n CANCELLABLE_OFF_CYCLE_REASONS.has(payroll.offCycleReason)\n\n return !!(canSkipPayroll || canDeletePayroll)\n}\n\ninterface PayrollListPresentationProps {\n /** CSS class name applied to the root element. */\n className?: string\n onRunPayroll: ({ payrollUuid, payPeriod }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => void\n onSubmitPayroll: ({ payrollUuid, payPeriod }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => void\n onSkipPayroll: ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => void\n onDeletePayroll: ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => void\n onRunOffCyclePayroll: () => void\n payrolls: Payroll[]\n pagination?: PaginationControlProps\n paySchedules: PayScheduleShow[]\n showSkipSuccessAlert: boolean\n onDismissSkipSuccessAlert: () => void\n showDeleteSuccessAlert: boolean\n onDismissDeleteSuccessAlert: () => void\n skippingPayrollId: string | null\n deletingPayrollId: string | null\n blockers: ApiPayrollBlocker[]\n wireInRequests: WireInRequest[]\n dateRangeFilter: UseDateRangeFilterResult\n hasUnprocessedTransitions?: boolean\n withOffcyclePayroll?: boolean\n}\n\n/** @internal */\nexport const PayrollListPresentation = ({\n className,\n onRunPayroll,\n onSubmitPayroll,\n onSkipPayroll,\n onDeletePayroll,\n onRunOffCyclePayroll,\n payrolls,\n pagination,\n paySchedules,\n showSkipSuccessAlert,\n onDismissSkipSuccessAlert,\n showDeleteSuccessAlert,\n onDismissDeleteSuccessAlert,\n skippingPayrollId,\n deletingPayrollId,\n blockers,\n wireInRequests,\n dateRangeFilter,\n hasUnprocessedTransitions = false,\n withOffcyclePayroll = true,\n}: PayrollListPresentationProps) => {\n const { Box, BoxHeader, Button, ButtonIcon, Dialog, Heading, Text, Alert } = useComponentContext()\n useI18n('Payroll.PayrollList')\n const { t } = useTranslation('Payroll.PayrollList')\n const dateFormatter = useDateFormatter()\n const containerRef = useRef<HTMLDivElement>(null)\n const breakpoints = useContainerBreakpoints({ ref: containerRef })\n const isDesktop = breakpoints.includes('large')\n\n const todayAtMidnight = useMemo(() => {\n const todayDateString = formatDateToStringDate(new Date())\n return todayDateString ? new Date(todayDateString) : null\n }, [])\n\n const anyPayrollHasKebabActions = useMemo(\n () => payrolls.some(payroll => hasKebabActions(payroll, blockers, todayAtMidnight)),\n [payrolls, blockers, todayAtMidnight],\n )\n\n const [skipPayrollDialogState, setSkipPayrollDialogState] = useState<{\n isOpen: boolean\n payrollId: string | null\n payPeriod: string | null\n }>({\n isOpen: false,\n payrollId: null,\n payPeriod: null,\n })\n\n const handleOpenSkipDialog = (payrollId: string, payPeriod: string) => {\n setSkipPayrollDialogState({\n isOpen: true,\n payrollId,\n payPeriod,\n })\n }\n\n const handleCloseSkipDialog = () => {\n setSkipPayrollDialogState({\n isOpen: false,\n payrollId: null,\n payPeriod: null,\n })\n }\n\n const handleConfirmSkipPayroll = () => {\n if (skipPayrollDialogState.payrollId) {\n onSkipPayroll({ payrollUuid: skipPayrollDialogState.payrollId })\n handleCloseSkipDialog()\n }\n }\n\n const [deletePayrollDialogState, setDeletePayrollDialogState] = useState<{\n isOpen: boolean\n payrollId: string | null\n payPeriod: string | null\n }>({\n isOpen: false,\n payrollId: null,\n payPeriod: null,\n })\n\n const handleOpenDeleteDialog = (payrollId: string, payPeriod: string) => {\n setDeletePayrollDialogState({\n isOpen: true,\n payrollId,\n payPeriod,\n })\n }\n\n const handleCloseDeleteDialog = () => {\n setDeletePayrollDialogState({\n isOpen: false,\n payrollId: null,\n payPeriod: null,\n })\n }\n\n const handleConfirmDeletePayroll = () => {\n if (deletePayrollDialogState.payrollId) {\n onDeletePayroll({ payrollUuid: deletePayrollDialogState.payrollId })\n handleCloseDeleteDialog()\n }\n }\n\n const formatPayPeriod = (\n startDate: string | null | undefined,\n endDate: string | null | undefined,\n ) => {\n const formattedStartDate = dateFormatter.formatShort(startDate)\n const formattedEndDate = dateFormatter.formatShortWithYear(endDate)\n\n return {\n startDate: formattedStartDate,\n endDate: formattedEndDate,\n fullPeriod: dateFormatter.formatPayPeriodRange(startDate, endDate, { useShortMonth: true }),\n }\n }\n\n const renderActionButton = (payroll: Payroll) => {\n const { payrollUuid, calculatedAt, processed, payPeriod } = payroll\n\n if (processed) {\n return null\n }\n\n const isProcessingSkipPayroll = skippingPayrollId === payrollUuid\n const isRegular = !payroll.offCycle\n const isDisabledByTransition = isRegular && hasUnprocessedTransitions\n\n return calculatedAt ? (\n <Button\n isLoading={isProcessingSkipPayroll}\n isDisabled={isDisabledByTransition}\n onClick={() => {\n onSubmitPayroll({ payrollUuid, payPeriod })\n }}\n title={t('submitPayrollCta')}\n variant=\"secondary\"\n >\n {t('submitPayrollCta')}\n </Button>\n ) : (\n <Button\n isLoading={isProcessingSkipPayroll}\n isDisabled={isDisabledByTransition}\n onClick={() => {\n onRunPayroll({ payrollUuid, payPeriod })\n }}\n title={t('runPayrollTitle')}\n variant=\"secondary\"\n >\n {t('runPayrollTitle')}\n </Button>\n )\n }\n\n return (\n <div ref={containerRef} className={classNames(styles.container, className)}>\n <Flex flexDirection=\"column\" gap={16} alignItems=\"stretch\">\n {showSkipSuccessAlert && (\n <div className={styles.alertContainer}>\n <Alert\n status=\"info\"\n label={t('skipSuccessAlert')}\n onDismiss={onDismissSkipSuccessAlert}\n />\n </div>\n )}\n {showDeleteSuccessAlert && (\n <div className={styles.alertContainer}>\n <Alert\n status=\"info\"\n label={t('deleteSuccessAlert')}\n onDismiss={onDismissDeleteSuccessAlert}\n />\n </div>\n )}\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Heading as=\"h2\">{t('title')}</Heading>\n <DateRangeFilter\n startDate={dateRangeFilter.startDate}\n endDate={dateRangeFilter.endDate}\n onStartDateChange={dateRangeFilter.handleStartDateChange}\n onEndDateChange={dateRangeFilter.handleEndDateChange}\n onClear={dateRangeFilter.handleClearFilter}\n startDateLabel={t('dateFilter.startDate')}\n endDateLabel={t('dateFilter.endDate')}\n applyLabel={t('dateFilter.apply')}\n cancelLabel={t('dateFilter.cancel')}\n resetLabel={t('dateFilter.reset')}\n selectDatesLabel={t('dateFilter.selectDates')}\n triggerLabel={t('dateFilter.trigger')}\n maxEndDate={dateRangeFilter.getMaxEndDate()}\n minStartDate={dateRangeFilter.getMinStartDate()}\n />\n </Flex>\n\n <DataView\n breakAt=\"large\"\n pagination={pagination}\n isFetching={pagination?.isFetching}\n emptyState={() =>\n dateRangeFilter.isModified ? (\n <EmptyData\n title={t('emptyState.filtered.title')}\n description={t('emptyState.filtered.description')}\n />\n ) : (\n <EmptyData title={t('emptyState.default.title')} />\n )\n }\n data={payrolls}\n columns={[\n {\n render: ({ payPeriod }) => {\n const { startDate, endDate } = formatPayPeriod(\n payPeriod?.startDate,\n payPeriod?.endDate,\n )\n\n return (\n <div className={styles.payPeriodCell}>\n {startDate} - {endDate}\n <Text variant=\"supporting\" size=\"sm\">\n {paySchedules.find(schedule => schedule.uuid === payPeriod?.payScheduleUuid)\n ?.name ||\n paySchedules.find(schedule => schedule.uuid === payPeriod?.payScheduleUuid)\n ?.customName}\n </Text>\n </div>\n )\n },\n title: t('tableHeaders.0'),\n },\n {\n render: payroll => getPayrollTypeLabel(payroll),\n title: t('tableHeaders.1'),\n },\n {\n render: ({ checkDate }) => dateFormatter.formatShortWithWeekdayAndYear(checkDate),\n title: t('tableHeaders.2'),\n },\n {\n title: t('tableHeaders.3'),\n render: ({ payrollDeadline }) =>\n dateFormatter.formatShortWithWeekdayAndYear(payrollDeadline),\n },\n {\n title: <VisuallyHidden>{t('tableHeaders.4')}</VisuallyHidden>,\n render: payroll => {\n const wireInRequest = wireInRequests.find(\n wire => wire.paymentUuid === payroll.payrollUuid,\n )\n return <PayrollStatusBadges payroll={payroll} wireInRequest={wireInRequest} />\n },\n },\n ...(!isDesktop\n ? [\n {\n title: '',\n render: (payroll: Payroll) => {\n const button = renderActionButton(payroll)\n if (!button) return null\n return (\n <Flex flexDirection=\"column\" alignItems=\"stretch\" gap={12}>\n {button}\n </Flex>\n )\n },\n },\n ]\n : []),\n ]}\n label={t('payrollsListLabel')}\n itemMenu={payroll => {\n const { payrollUuid, processed, payPeriod } = payroll\n\n const isProcessingSkipPayroll = skippingPayrollId === payrollUuid\n const isProcessingDeletePayroll = deletingPayrollId === payrollUuid\n\n const button = isDesktop ? renderActionButton(payroll) : null\n\n if (processed) {\n return (\n <div className={styles.actionsContainer}>\n {anyPayrollHasKebabActions && (\n <ButtonIcon\n aria-label=\"\"\n aria-hidden={true}\n tabIndex={-1}\n isDisabled={true}\n className={styles.menuPlaceholder}\n />\n )}\n </div>\n )\n }\n\n const { fullPeriod: payPeriodString } = formatPayPeriod(\n payPeriod?.startDate,\n payPeriod?.endDate,\n )\n\n const payPeriodStartDate = payPeriod?.startDate ? new Date(payPeriod.startDate) : null\n\n const isSkippablePayroll =\n !payroll.offCycle ||\n payroll.offCycleReason === OffCycleReasonType.TransitionFromOldPaySchedule\n\n const canSkipPayroll =\n blockers.length === 0 &&\n isSkippablePayroll &&\n todayAtMidnight &&\n payPeriodStartDate &&\n todayAtMidnight >= payPeriodStartDate\n\n const canDeletePayroll =\n payroll.offCycle &&\n !!payroll.offCycleReason &&\n CANCELLABLE_OFF_CYCLE_REASONS.has(payroll.offCycleReason)\n\n const menuItems = canSkipPayroll\n ? [\n {\n label: t('skipPayrollCta'),\n onClick: () => {\n handleOpenSkipDialog(payrollUuid!, payPeriodString)\n },\n },\n ]\n : canDeletePayroll\n ? [\n {\n label: t('deletePayrollCta'),\n onClick: () => {\n handleOpenDeleteDialog(payrollUuid!, payPeriodString)\n },\n },\n ]\n : null\n\n const hasMenuActions = menuItems !== null\n\n return (\n <div className={styles.actionsContainer}>\n {button}\n {hasMenuActions ? (\n <HamburgerMenu\n isLoading={canSkipPayroll ? isProcessingSkipPayroll : isProcessingDeletePayroll}\n menuLabel={t('payrollMenuLabel')}\n items={menuItems}\n />\n ) : (\n anyPayrollHasKebabActions && (\n <ButtonIcon\n aria-label=\"\"\n aria-hidden={true}\n tabIndex={-1}\n isDisabled={true}\n className={styles.menuPlaceholder}\n />\n )\n )}\n </div>\n )\n }}\n />\n <Dialog\n isOpen={skipPayrollDialogState.isOpen}\n onClose={handleCloseSkipDialog}\n onPrimaryActionClick={handleConfirmSkipPayroll}\n isDestructive={true}\n title={t('skipPayrollDialog.title', { payPeriod: skipPayrollDialogState.payPeriod })}\n primaryActionLabel={t('skipPayrollDialog.confirmCta')}\n closeActionLabel={t('skipPayrollDialog.cancelCta')}\n >\n {t('skipPayrollDialog.body')}\n </Dialog>\n <Dialog\n isOpen={deletePayrollDialogState.isOpen}\n onClose={handleCloseDeleteDialog}\n onPrimaryActionClick={handleConfirmDeletePayroll}\n isDestructive={true}\n title={t('deletePayrollDialog.title', {\n payPeriod: deletePayrollDialogState.payPeriod,\n })}\n primaryActionLabel={t('deletePayrollDialog.confirmCta')}\n closeActionLabel={t('deletePayrollDialog.cancelCta')}\n >\n {t('deletePayrollDialog.body')}\n </Dialog>\n {withOffcyclePayroll && (\n <div className={styles.offCycleCta}>\n <Box\n header={\n <BoxHeader\n title={t('offCycleCta.title')}\n description={t('offCycleCta.description')}\n />\n }\n footer={\n <Button variant=\"secondary\" onClick={onRunOffCyclePayroll}>\n {t('offCycleCta.button')}\n </Button>\n }\n />\n </div>\n )}\n </Flex>\n </div>\n )\n}\n"],"names":["CANCELLABLE_OFF_CYCLE_REASONS","OffCycleReasonType","hasKebabActions","payroll","blockers","todayAtMidnight","payPeriodStartDate","isSkippablePayroll","canSkipPayroll","canDeletePayroll","PayrollListPresentation","className","onRunPayroll","onSubmitPayroll","onSkipPayroll","onDeletePayroll","onRunOffCyclePayroll","payrolls","pagination","paySchedules","showSkipSuccessAlert","onDismissSkipSuccessAlert","showDeleteSuccessAlert","onDismissDeleteSuccessAlert","skippingPayrollId","deletingPayrollId","wireInRequests","dateRangeFilter","hasUnprocessedTransitions","withOffcyclePayroll","Box","BoxHeader","Button","ButtonIcon","Dialog","Heading","Text","Alert","useComponentContext","useI18n","useTranslation","dateFormatter","useDateFormatter","containerRef","useRef","isDesktop","useContainerBreakpoints","useMemo","todayDateString","formatDateToStringDate","anyPayrollHasKebabActions","skipPayrollDialogState","setSkipPayrollDialogState","useState","handleOpenSkipDialog","payrollId","payPeriod","handleCloseSkipDialog","handleConfirmSkipPayroll","deletePayrollDialogState","setDeletePayrollDialogState","handleOpenDeleteDialog","handleCloseDeleteDialog","handleConfirmDeletePayroll","formatPayPeriod","startDate","endDate","formattedStartDate","formattedEndDate","renderActionButton","payrollUuid","calculatedAt","processed","isProcessingSkipPayroll","isDisabledByTransition","jsx","classNames","styles","Flex","jsxs","DateRangeFilter","DataView","EmptyData","schedule","getPayrollTypeLabel","checkDate","payrollDeadline","VisuallyHidden","wireInRequest","wire","PayrollStatusBadges","button","isProcessingDeletePayroll","payPeriodString","menuItems","hasMenuActions","HamburgerMenu"],"mappings":"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"}
1
+ {"version":3,"file":"PayrollListPresentation.js","sources":["../../../../src/components/Payroll/PayrollList/PayrollListPresentation.tsx"],"sourcesContent":["import type { Payroll } from '@gusto/embedded-api/models/components/unprocessedpayroll'\nimport { OffCycleReasonType } from '@gusto/embedded-api/models/components/unprocessedpayroll'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payschedulelistitem'\nimport type { WireInRequest } from '@gusto/embedded-api/models/components/wireinrequest'\nimport { useState, useRef, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollStatusBadges } from '../PayrollStatusBadges'\nimport { getPayrollTypeLabel } from '../helpers'\nimport styles from './PayrollListPresentation.module.scss'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport {\n DataView,\n Flex,\n HamburgerMenu,\n DateRangeFilter,\n EmptyData,\n VisuallyHidden,\n} from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport type { UseDateRangeFilterResult } from '@/hooks/useDateRangeFilter/useDateRangeFilter'\nimport { useI18n } from '@/i18n'\nimport { formatDateToStringDate } from '@/helpers/dateFormatting'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\n\nconst CANCELLABLE_OFF_CYCLE_REASONS = new Set<string>([\n OffCycleReasonType.Bonus,\n OffCycleReasonType.Correction,\n OffCycleReasonType.DismissedEmployee,\n])\n\nfunction hasKebabActions(\n payroll: Payroll,\n blockers: ApiPayrollBlocker[],\n todayAtMidnight: Date | null,\n): boolean {\n if (payroll.processed) return false\n\n const payPeriodStartDate = payroll.payPeriod?.startDate\n ? new Date(payroll.payPeriod.startDate)\n : null\n\n const isSkippablePayroll =\n !payroll.offCycle || payroll.offCycleReason === OffCycleReasonType.TransitionFromOldPaySchedule\n\n const canSkipPayroll =\n blockers.length === 0 &&\n isSkippablePayroll &&\n todayAtMidnight &&\n payPeriodStartDate &&\n todayAtMidnight >= payPeriodStartDate\n\n const canDeletePayroll =\n payroll.offCycle &&\n !!payroll.offCycleReason &&\n CANCELLABLE_OFF_CYCLE_REASONS.has(payroll.offCycleReason)\n\n return !!(canSkipPayroll || canDeletePayroll)\n}\n\ninterface PayrollListPresentationProps {\n /** CSS class name applied to the root element. */\n className?: string\n onRunPayroll: ({ payrollUuid, payPeriod }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => void\n onSubmitPayroll: ({ payrollUuid, payPeriod }: Pick<Payroll, 'payrollUuid' | 'payPeriod'>) => void\n onSkipPayroll: ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => void\n onDeletePayroll: ({ payrollUuid }: Pick<Payroll, 'payrollUuid'>) => void\n onRunOffCyclePayroll: () => void\n payrolls: Payroll[]\n pagination?: PaginationControlProps\n paySchedules: PayScheduleShow[]\n showSkipSuccessAlert: boolean\n onDismissSkipSuccessAlert: () => void\n showDeleteSuccessAlert: boolean\n onDismissDeleteSuccessAlert: () => void\n skippingPayrollId: string | null\n deletingPayrollId: string | null\n blockers: ApiPayrollBlocker[]\n wireInRequests: WireInRequest[]\n dateRangeFilter: UseDateRangeFilterResult\n hasUnprocessedTransitions?: boolean\n withOffcyclePayroll?: boolean\n}\n\n/** @internal */\nexport const PayrollListPresentation = ({\n className,\n onRunPayroll,\n onSubmitPayroll,\n onSkipPayroll,\n onDeletePayroll,\n onRunOffCyclePayroll,\n payrolls,\n pagination,\n paySchedules,\n showSkipSuccessAlert,\n onDismissSkipSuccessAlert,\n showDeleteSuccessAlert,\n onDismissDeleteSuccessAlert,\n skippingPayrollId,\n deletingPayrollId,\n blockers,\n wireInRequests,\n dateRangeFilter,\n hasUnprocessedTransitions = false,\n withOffcyclePayroll = true,\n}: PayrollListPresentationProps) => {\n const { Box, BoxHeader, Button, ButtonIcon, Dialog, Heading, Text, Alert } = useComponentContext()\n useI18n('Payroll.PayrollList')\n const { t } = useTranslation('Payroll.PayrollList')\n const dateFormatter = useDateFormatter()\n const containerRef = useRef<HTMLDivElement>(null)\n const breakpoints = useContainerBreakpoints({ ref: containerRef })\n const isDesktop = breakpoints.includes('large')\n\n const todayAtMidnight = useMemo(() => {\n const todayDateString = formatDateToStringDate(new Date())\n return todayDateString ? new Date(todayDateString) : null\n }, [])\n\n const anyPayrollHasKebabActions = useMemo(\n () => payrolls.some(payroll => hasKebabActions(payroll, blockers, todayAtMidnight)),\n [payrolls, blockers, todayAtMidnight],\n )\n\n const [skipPayrollDialogState, setSkipPayrollDialogState] = useState<{\n isOpen: boolean\n payrollId: string | null\n payPeriod: string | null\n }>({\n isOpen: false,\n payrollId: null,\n payPeriod: null,\n })\n\n const handleOpenSkipDialog = (payrollId: string, payPeriod: string) => {\n setSkipPayrollDialogState({\n isOpen: true,\n payrollId,\n payPeriod,\n })\n }\n\n const handleCloseSkipDialog = () => {\n setSkipPayrollDialogState({\n isOpen: false,\n payrollId: null,\n payPeriod: null,\n })\n }\n\n const handleConfirmSkipPayroll = () => {\n if (skipPayrollDialogState.payrollId) {\n onSkipPayroll({ payrollUuid: skipPayrollDialogState.payrollId })\n handleCloseSkipDialog()\n }\n }\n\n const [deletePayrollDialogState, setDeletePayrollDialogState] = useState<{\n isOpen: boolean\n payrollId: string | null\n payPeriod: string | null\n }>({\n isOpen: false,\n payrollId: null,\n payPeriod: null,\n })\n\n const handleOpenDeleteDialog = (payrollId: string, payPeriod: string) => {\n setDeletePayrollDialogState({\n isOpen: true,\n payrollId,\n payPeriod,\n })\n }\n\n const handleCloseDeleteDialog = () => {\n setDeletePayrollDialogState({\n isOpen: false,\n payrollId: null,\n payPeriod: null,\n })\n }\n\n const handleConfirmDeletePayroll = () => {\n if (deletePayrollDialogState.payrollId) {\n onDeletePayroll({ payrollUuid: deletePayrollDialogState.payrollId })\n handleCloseDeleteDialog()\n }\n }\n\n const formatPayPeriod = (\n startDate: string | null | undefined,\n endDate: string | null | undefined,\n ) => {\n const formattedStartDate = dateFormatter.formatShort(startDate)\n const formattedEndDate = dateFormatter.formatShortWithYear(endDate)\n\n return {\n startDate: formattedStartDate,\n endDate: formattedEndDate,\n fullPeriod: dateFormatter.formatPayPeriodRange(startDate, endDate, { useShortMonth: true }),\n }\n }\n\n const renderActionButton = (payroll: Payroll) => {\n const { payrollUuid, calculatedAt, processed, payPeriod } = payroll\n\n if (processed) {\n return null\n }\n\n const isProcessingSkipPayroll = skippingPayrollId === payrollUuid\n const isRegular = !payroll.offCycle\n const isDisabledByTransition = isRegular && hasUnprocessedTransitions\n\n return calculatedAt ? (\n <Button\n isLoading={isProcessingSkipPayroll}\n isDisabled={isDisabledByTransition}\n onClick={() => {\n onSubmitPayroll({ payrollUuid, payPeriod })\n }}\n title={t('submitPayrollCta')}\n variant=\"secondary\"\n >\n {t('submitPayrollCta')}\n </Button>\n ) : (\n <Button\n isLoading={isProcessingSkipPayroll}\n isDisabled={isDisabledByTransition}\n onClick={() => {\n onRunPayroll({ payrollUuid, payPeriod })\n }}\n title={t('runPayrollTitle')}\n variant=\"secondary\"\n >\n {t('runPayrollTitle')}\n </Button>\n )\n }\n\n return (\n <div ref={containerRef} className={classNames(styles.container, className)}>\n <Flex flexDirection=\"column\" gap={16} alignItems=\"stretch\">\n {showSkipSuccessAlert && (\n <div className={styles.alertContainer}>\n <Alert\n status=\"info\"\n label={t('skipSuccessAlert')}\n onDismiss={onDismissSkipSuccessAlert}\n />\n </div>\n )}\n {showDeleteSuccessAlert && (\n <div className={styles.alertContainer}>\n <Alert\n status=\"info\"\n label={t('deleteSuccessAlert')}\n onDismiss={onDismissDeleteSuccessAlert}\n />\n </div>\n )}\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <Heading as=\"h2\">{t('title')}</Heading>\n <DateRangeFilter\n startDate={dateRangeFilter.startDate}\n endDate={dateRangeFilter.endDate}\n onStartDateChange={dateRangeFilter.handleStartDateChange}\n onEndDateChange={dateRangeFilter.handleEndDateChange}\n onClear={dateRangeFilter.handleClearFilter}\n startDateLabel={t('dateFilter.startDate')}\n endDateLabel={t('dateFilter.endDate')}\n applyLabel={t('dateFilter.apply')}\n cancelLabel={t('dateFilter.cancel')}\n resetLabel={t('dateFilter.reset')}\n selectDatesLabel={t('dateFilter.selectDates')}\n getTriggerLabel={selection => t('dateFilter.triggerLabel', { selection })}\n maxEndDate={dateRangeFilter.getMaxEndDate()}\n minStartDate={dateRangeFilter.getMinStartDate()}\n />\n </Flex>\n\n <DataView\n breakAt=\"large\"\n pagination={pagination}\n isFetching={pagination?.isFetching}\n emptyState={() =>\n dateRangeFilter.isModified ? (\n <EmptyData\n title={t('emptyState.filtered.title')}\n description={t('emptyState.filtered.description')}\n />\n ) : (\n <EmptyData title={t('emptyState.default.title')} />\n )\n }\n data={payrolls}\n columns={[\n {\n render: ({ payPeriod }) => {\n const { startDate, endDate } = formatPayPeriod(\n payPeriod?.startDate,\n payPeriod?.endDate,\n )\n\n return (\n <div className={styles.payPeriodCell}>\n {startDate} - {endDate}\n <Text variant=\"supporting\" size=\"sm\">\n {paySchedules.find(schedule => schedule.uuid === payPeriod?.payScheduleUuid)\n ?.name ||\n paySchedules.find(schedule => schedule.uuid === payPeriod?.payScheduleUuid)\n ?.customName}\n </Text>\n </div>\n )\n },\n title: t('tableHeaders.0'),\n },\n {\n render: payroll => getPayrollTypeLabel(payroll),\n title: t('tableHeaders.1'),\n },\n {\n render: ({ checkDate }) => dateFormatter.formatShortWithWeekdayAndYear(checkDate),\n title: t('tableHeaders.2'),\n },\n {\n title: t('tableHeaders.3'),\n render: ({ payrollDeadline }) =>\n dateFormatter.formatShortWithWeekdayAndYear(payrollDeadline),\n },\n {\n title: <VisuallyHidden>{t('tableHeaders.4')}</VisuallyHidden>,\n render: payroll => {\n const wireInRequest = wireInRequests.find(\n wire => wire.paymentUuid === payroll.payrollUuid,\n )\n return <PayrollStatusBadges payroll={payroll} wireInRequest={wireInRequest} />\n },\n },\n ...(!isDesktop\n ? [\n {\n title: '',\n render: (payroll: Payroll) => {\n const button = renderActionButton(payroll)\n if (!button) return null\n return (\n <Flex flexDirection=\"column\" alignItems=\"stretch\" gap={12}>\n {button}\n </Flex>\n )\n },\n },\n ]\n : []),\n ]}\n label={t('payrollsListLabel')}\n itemMenu={payroll => {\n const { payrollUuid, processed, payPeriod } = payroll\n\n const isProcessingSkipPayroll = skippingPayrollId === payrollUuid\n const isProcessingDeletePayroll = deletingPayrollId === payrollUuid\n\n const button = isDesktop ? renderActionButton(payroll) : null\n\n if (processed) {\n return (\n <div className={styles.actionsContainer}>\n {anyPayrollHasKebabActions && (\n <ButtonIcon\n aria-label=\"\"\n aria-hidden={true}\n tabIndex={-1}\n isDisabled={true}\n className={styles.menuPlaceholder}\n />\n )}\n </div>\n )\n }\n\n const { fullPeriod: payPeriodString } = formatPayPeriod(\n payPeriod?.startDate,\n payPeriod?.endDate,\n )\n\n const payPeriodStartDate = payPeriod?.startDate ? new Date(payPeriod.startDate) : null\n\n const isSkippablePayroll =\n !payroll.offCycle ||\n payroll.offCycleReason === OffCycleReasonType.TransitionFromOldPaySchedule\n\n const canSkipPayroll =\n blockers.length === 0 &&\n isSkippablePayroll &&\n todayAtMidnight &&\n payPeriodStartDate &&\n todayAtMidnight >= payPeriodStartDate\n\n const canDeletePayroll =\n payroll.offCycle &&\n !!payroll.offCycleReason &&\n CANCELLABLE_OFF_CYCLE_REASONS.has(payroll.offCycleReason)\n\n const menuItems = canSkipPayroll\n ? [\n {\n label: t('skipPayrollCta'),\n onClick: () => {\n handleOpenSkipDialog(payrollUuid!, payPeriodString)\n },\n },\n ]\n : canDeletePayroll\n ? [\n {\n label: t('deletePayrollCta'),\n onClick: () => {\n handleOpenDeleteDialog(payrollUuid!, payPeriodString)\n },\n },\n ]\n : null\n\n const hasMenuActions = menuItems !== null\n\n return (\n <div className={styles.actionsContainer}>\n {button}\n {hasMenuActions ? (\n <HamburgerMenu\n isLoading={canSkipPayroll ? isProcessingSkipPayroll : isProcessingDeletePayroll}\n menuLabel={t('payrollMenuLabel')}\n items={menuItems}\n />\n ) : (\n anyPayrollHasKebabActions && (\n <ButtonIcon\n aria-label=\"\"\n aria-hidden={true}\n tabIndex={-1}\n isDisabled={true}\n className={styles.menuPlaceholder}\n />\n )\n )}\n </div>\n )\n }}\n />\n <Dialog\n isOpen={skipPayrollDialogState.isOpen}\n onClose={handleCloseSkipDialog}\n onPrimaryActionClick={handleConfirmSkipPayroll}\n isDestructive={true}\n title={t('skipPayrollDialog.title', { payPeriod: skipPayrollDialogState.payPeriod })}\n primaryActionLabel={t('skipPayrollDialog.confirmCta')}\n closeActionLabel={t('skipPayrollDialog.cancelCta')}\n >\n {t('skipPayrollDialog.body')}\n </Dialog>\n <Dialog\n isOpen={deletePayrollDialogState.isOpen}\n onClose={handleCloseDeleteDialog}\n onPrimaryActionClick={handleConfirmDeletePayroll}\n isDestructive={true}\n title={t('deletePayrollDialog.title', {\n payPeriod: deletePayrollDialogState.payPeriod,\n })}\n primaryActionLabel={t('deletePayrollDialog.confirmCta')}\n closeActionLabel={t('deletePayrollDialog.cancelCta')}\n >\n {t('deletePayrollDialog.body')}\n </Dialog>\n {withOffcyclePayroll && (\n <div className={styles.offCycleCta}>\n <Box\n header={\n <BoxHeader\n title={t('offCycleCta.title')}\n description={t('offCycleCta.description')}\n />\n }\n footer={\n <Button variant=\"secondary\" onClick={onRunOffCyclePayroll}>\n {t('offCycleCta.button')}\n </Button>\n }\n />\n </div>\n )}\n </Flex>\n </div>\n )\n}\n"],"names":["CANCELLABLE_OFF_CYCLE_REASONS","OffCycleReasonType","hasKebabActions","payroll","blockers","todayAtMidnight","payPeriodStartDate","isSkippablePayroll","canSkipPayroll","canDeletePayroll","PayrollListPresentation","className","onRunPayroll","onSubmitPayroll","onSkipPayroll","onDeletePayroll","onRunOffCyclePayroll","payrolls","pagination","paySchedules","showSkipSuccessAlert","onDismissSkipSuccessAlert","showDeleteSuccessAlert","onDismissDeleteSuccessAlert","skippingPayrollId","deletingPayrollId","wireInRequests","dateRangeFilter","hasUnprocessedTransitions","withOffcyclePayroll","Box","BoxHeader","Button","ButtonIcon","Dialog","Heading","Text","Alert","useComponentContext","useI18n","useTranslation","dateFormatter","useDateFormatter","containerRef","useRef","isDesktop","useContainerBreakpoints","useMemo","todayDateString","formatDateToStringDate","anyPayrollHasKebabActions","skipPayrollDialogState","setSkipPayrollDialogState","useState","handleOpenSkipDialog","payrollId","payPeriod","handleCloseSkipDialog","handleConfirmSkipPayroll","deletePayrollDialogState","setDeletePayrollDialogState","handleOpenDeleteDialog","handleCloseDeleteDialog","handleConfirmDeletePayroll","formatPayPeriod","startDate","endDate","formattedStartDate","formattedEndDate","renderActionButton","payrollUuid","calculatedAt","processed","isProcessingSkipPayroll","isDisabledByTransition","jsx","classNames","styles","Flex","jsxs","DateRangeFilter","selection","DataView","EmptyData","schedule","getPayrollTypeLabel","checkDate","payrollDeadline","VisuallyHidden","wireInRequest","wire","PayrollStatusBadges","button","isProcessingDeletePayroll","payPeriodString","menuItems","hasMenuActions","HamburgerMenu"],"mappings":"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"}