@gusto/embedded-react-sdk 0.55.2 → 0.55.4

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 (159) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/components/Common/DataView/DataCards/DataCards.d.ts +2 -1
  3. package/dist/components/Common/DataView/DataCards/DataCards.js +63 -54
  4. package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
  5. package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js +14 -12
  6. package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js.map +1 -1
  7. package/dist/components/Common/DataView/DataTable/DataTable.d.ts +2 -1
  8. package/dist/components/Common/DataView/DataTable/DataTable.js +75 -66
  9. package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
  10. package/dist/components/Common/DataView/DataTable/DataTable.module.scss.js +8 -4
  11. package/dist/components/Common/DataView/DataTable/DataTable.module.scss.js.map +1 -1
  12. package/dist/components/Common/DataView/DataView.js +18 -17
  13. package/dist/components/Common/DataView/DataView.js.map +1 -1
  14. package/dist/components/Common/FieldLayout/FieldLayout.js +6 -6
  15. package/dist/components/Common/Fieldset/Fieldset.js +6 -6
  16. package/dist/components/Common/HorizontalFieldLayout/HorizontalFieldLayout.js +6 -6
  17. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js +58 -49
  18. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js.map +1 -1
  19. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.module.scss.js +14 -10
  20. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.module.scss.js.map +1 -1
  21. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes.d.ts +4 -0
  22. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -4
  23. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  24. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -4
  25. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  26. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -6
  27. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  28. package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -4
  29. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  30. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.d.ts +4 -0
  31. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  32. package/dist/components/Company/DocumentSigner/DocumentList/List.js +11 -8
  33. package/dist/components/Company/DocumentSigner/DocumentList/List.js.map +1 -1
  34. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -4
  35. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  36. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +5 -6
  37. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  38. package/dist/components/Company/Industry/Context.js +6 -7
  39. package/dist/components/Company/Industry/Context.js.map +1 -1
  40. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -4
  41. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  42. package/dist/components/Company/Locations/LocationsList/List.js +27 -25
  43. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  44. package/dist/components/Company/Locations/LocationsList/LocationsList.js +41 -36
  45. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  46. package/dist/components/Company/Locations/LocationsList/useLocationsList.d.ts +1 -0
  47. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -4
  48. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  49. package/dist/components/Company/OnboardingOverview/context.js +3 -4
  50. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  51. package/dist/components/Company/StateTaxes/StateTaxesForm/Form.d.ts +9 -2
  52. package/dist/components/Company/StateTaxes/StateTaxesForm/Form.js +19 -18
  53. package/dist/components/Company/StateTaxes/StateTaxesForm/Form.js.map +1 -1
  54. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +63 -62
  55. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
  56. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -4
  57. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  58. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -4
  59. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  60. package/dist/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.js +69 -65
  61. package/dist/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.js.map +1 -1
  62. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -4
  63. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  64. package/dist/components/Company/StateTaxes/TaxRateManagement/toHistoryRows.js +30 -23
  65. package/dist/components/Company/StateTaxes/TaxRateManagement/toHistoryRows.js.map +1 -1
  66. package/dist/components/Company/StateTaxes/shared/RequirementFields.d.ts +8 -4
  67. package/dist/components/Company/StateTaxes/shared/RequirementFields.js +13 -12
  68. package/dist/components/Company/StateTaxes/shared/RequirementFields.js.map +1 -1
  69. package/dist/components/Company/StateTaxes/shared/prepareRequirements.d.ts +29 -0
  70. package/dist/components/Company/StateTaxes/shared/prepareRequirements.js +24 -0
  71. package/dist/components/Company/StateTaxes/shared/prepareRequirements.js.map +1 -0
  72. package/dist/components/Company/StateTaxes/shared/prepareRequirements.test.d.ts +1 -0
  73. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +68 -55
  74. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
  75. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +36 -35
  76. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
  77. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +116 -116
  78. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  79. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.d.ts +4 -0
  80. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js +19 -19
  81. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  82. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.js +16 -13
  83. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.js.map +1 -1
  84. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -4
  85. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  86. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.d.ts +4 -0
  87. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
  88. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +84 -96
  89. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js.map +1 -1
  90. package/dist/components/Flow/Flow.js +22 -22
  91. package/dist/components/Flow/Flow.js.map +1 -1
  92. package/dist/components/Flow/useFlow.js +3 -3
  93. package/dist/components/InformationRequests/InformationRequests.d.ts +1 -1
  94. package/dist/components/InformationRequests/InformationRequests.js +68 -53
  95. package/dist/components/InformationRequests/InformationRequests.js.map +1 -1
  96. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +2 -3
  97. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  98. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +87 -81
  99. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  100. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
  101. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +86 -67
  102. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
  103. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +4 -0
  104. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.d.ts +1 -1
  105. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js +26 -21
  106. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js.map +1 -1
  107. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.d.ts +8 -1
  108. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +29 -17
  109. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
  110. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js +21 -18
  111. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js.map +1 -1
  112. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js +9 -7
  113. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js.map +1 -1
  114. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +2 -0
  115. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js.map +1 -1
  116. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +200 -199
  117. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  118. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +3 -2
  119. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +32 -32
  120. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  121. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +254 -243
  122. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  123. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +83 -76
  124. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  125. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +23 -22
  126. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  127. package/dist/components/Payroll/PayrollList/PayrollList.js +108 -97
  128. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  129. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +38 -37
  130. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  131. package/dist/components/Payroll/PayrollOverview/PayrollOverview.d.ts +8 -1
  132. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +196 -174
  133. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  134. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +3 -1
  135. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +173 -163
  136. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  137. package/dist/components/Payroll/helpers.d.ts +0 -15
  138. package/dist/components/Payroll/helpers.js +13 -18
  139. package/dist/components/Payroll/helpers.js.map +1 -1
  140. package/dist/components/Payroll/usePreparedPayrollData.js +8 -9
  141. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  142. package/dist/helpers/openPdfInNewTab.d.ts +15 -0
  143. package/dist/helpers/openPdfInNewTab.js +28 -0
  144. package/dist/helpers/openPdfInNewTab.js.map +1 -0
  145. package/dist/i18n/en/Company.DocumentList.json.js +34 -32
  146. package/dist/i18n/en/Company.DocumentList.json.js.map +1 -1
  147. package/dist/i18n/en/Company.StateTaxes.json.js +1 -1
  148. package/dist/i18n/en/Employee.DocumentSigner.json.js +24 -22
  149. package/dist/i18n/en/Employee.DocumentSigner.json.js.map +1 -1
  150. package/dist/i18n/en/Payroll.OffCycleCreation.json.js +11 -9
  151. package/dist/i18n/en/Payroll.OffCycleCreation.json.js.map +1 -1
  152. package/dist/i18n/en/Payroll.OffCycleTaxWithholding.json.js +7 -7
  153. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +29 -27
  154. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
  155. package/dist/i18n/en/Payroll.PayrollOverview.json.js +41 -39
  156. package/dist/i18n/en/Payroll.PayrollOverview.json.js.map +1 -1
  157. package/dist/i18n/types.d.ts +331 -1
  158. package/dist/style.css +1 -1
  159. package/package.json +21 -21
@@ -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 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 { DataView, Flex, HamburgerMenu, DateRangeFilter, EmptyData } 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 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 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 = (startDate: string | undefined, endDate: string | undefined) => {\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={styles.container}>\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 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: t('tableHeaders.4'),\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","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","styles","jsxs","Flex","DateRangeFilter","DataView","EmptyData","schedule","getPayrollTypeLabel","checkDate","payrollDeadline","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/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 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 { DataView, Flex, HamburgerMenu, DateRangeFilter, EmptyData } 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 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 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 = (startDate: string | undefined, endDate: string | undefined) => {\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={styles.container}>\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: t('tableHeaders.4'),\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","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","styles","jsxs","Flex","DateRangeFilter","DataView","EmptyData","schedule","getPayrollTypeLabel","checkDate","payrollDeadline","wireInRequest","wire","PayrollStatusBadges","button","isProcessingDeletePayroll","payPeriodString","menuItems","hasMenuActions","HamburgerMenu"],"mappings":"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"}
@@ -17,6 +17,12 @@ export interface PayrollOverviewProps extends BaseComponentInterface<'Payroll.Pa
17
17
  withReimbursements?: boolean;
18
18
  /** Custom component to replace the default wire details confirmation UI. */
19
19
  ConfirmWireDetailsComponent?: ConfirmWireDetailsComponentType;
20
+ /**
21
+ * Hides the edit and cancel actions, leaving submit and receipt/paystub actions available.
22
+ * Use for a deep link to a specific payroll where editing shouldn't be offered. Defaults to
23
+ * `false`.
24
+ */
25
+ readOnly?: boolean;
20
26
  }
21
27
  /**
22
28
  * Final review screen for a calculated payroll before submission, with submit, cancel,
@@ -28,7 +34,8 @@ export interface PayrollOverviewProps extends BaseComponentInterface<'Payroll.Pa
28
34
  * uncalculated payroll throws. Unresolved submission blockers (e.g. fast-ACH threshold,
29
35
  * wire-in funding) are surfaced inline and the submit action stays disabled until each
30
36
  * blocker has a selected unblock option. While the payroll is processing, the component
31
- * polls until success or failure and emits the corresponding event.
37
+ * polls until success or failure and emits the corresponding event. Pass `readOnly` to hide
38
+ * the edit and cancel actions while keeping submit available.
32
39
  *
33
40
  * @events
34
41
  * | Event | Description | Data |
@@ -1,239 +1,261 @@
1
- import { jsx as l, jsxs as le } from "react/jsx-runtime";
2
- import { usePayrollsSubmitMutation as ce } from "@gusto/embedded-api/react-query/payrollsSubmit";
3
- import { usePayrollsCancelMutation as ue } from "@gusto/embedded-api/react-query/payrollsCancel";
4
- import { usePayrollsGet as me } from "@gusto/embedded-api/react-query/payrollsGet";
5
- import { keepPreviousData as pe } from "@tanstack/react-query";
6
- import { useTranslation as fe } from "react-i18next";
7
- import { useBankAccountsGetSuspense as de } from "@gusto/embedded-api/react-query/bankAccountsGet";
8
- import { useWireInRequestsGet as Pe } from "@gusto/embedded-api/react-query/wireInRequestsGet";
9
- import { useState as u, useEffect as L } from "react";
10
- import { useGustoEmbeddedContext as ye } from "@gusto/embedded-api/react-query/_context";
11
- import { payrollsGetPayStub as be } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
12
- import { useErrorBoundary as Re } from "react-error-boundary";
13
- import { ConfirmWireDetails as we } from "../ConfirmWireDetails/ConfirmWireDetails.js";
14
- import { canCancelPayroll as Se } from "../helpers.js";
15
- import { PrintChecks as Oe } from "../PrintChecks/PrintChecks.js";
16
- import { PayrollOverviewPresentation as ge } from "./PayrollOverviewPresentation.js";
17
- import { PayrollOverviewStatus as m } from "./PayrollOverviewTypes.js";
18
- import { useCompanyPaymentSpeed as he } from "../../../hooks/useCompanyPaymentSpeed.js";
19
- import { PAYROLL_PROCESSING_STATUS as w, componentEvents as c, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as Le, payrollWireEvents as _e } from "../../../shared/constants.js";
20
- import { BaseComponent as De } from "../../Base/Base.js";
21
- import { useBase as Ce } from "../../Base/useBase.js";
22
- import { useComponentDictionary as ke, useI18n as Ue } from "../../../i18n/I18n.js";
23
- import { readableStreamToBlob as Ee } from "../../../helpers/readableStreamToBlob.js";
24
- import Ae from "../../../hooks/useNumberFormatter.js";
25
- import { useDateFormatter as Be } from "../../../hooks/useDateFormatter.js";
26
- import { useComponentContext as Te } from "../../../contexts/ComponentAdapter/useComponentContext.js";
27
- import { renderErrorList as ve } from "../../../helpers/apiErrorToList.js";
28
- import { Flex as qe } from "../../Common/Flex/Flex.js";
29
- import { usePagination as Ne } from "../../../hooks/usePagination/usePagination.js";
30
- import { PayrollLoading as q } from "../../Common/PayrollLoading/PayrollLoading.js";
31
- const Ie = (s = []) => s.filter(
32
- (n) => n.status === "unresolved" && n.unblockOptions && n.unblockOptions.length > 0
33
- ), Ye = (s = []) => {
34
- const n = s.find((o) => o.status === "unresolved");
35
- return n?.unblockOptions ? n.unblockOptions.find(
36
- (o) => o.unblockType === "submit_wire"
1
+ import { jsx as l, jsxs as ye } from "react/jsx-runtime";
2
+ import { usePayrollsSubmitMutation as be } from "@gusto/embedded-api/react-query/payrollsSubmit";
3
+ import { usePayrollsCancelMutation as Se } from "@gusto/embedded-api/react-query/payrollsCancel";
4
+ import { usePayrollsGet as we } from "@gusto/embedded-api/react-query/payrollsGet";
5
+ import { keepPreviousData as ge } from "@tanstack/react-query";
6
+ import { useTranslation as Re } from "react-i18next";
7
+ import { useBankAccountsGetSuspense as De } from "@gusto/embedded-api/react-query/bankAccountsGet";
8
+ import { useWireInRequestsGet as he } from "@gusto/embedded-api/react-query/wireInRequestsGet";
9
+ import { useState as m, useEffect as O } from "react";
10
+ import { useGustoEmbeddedContext as _e } from "@gusto/embedded-api/react-query/_context";
11
+ import { payrollsGetPayStub as Le } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
12
+ import { useErrorBoundary as Oe } from "react-error-boundary";
13
+ import { ConfirmWireDetails as Ce } from "../ConfirmWireDetails/ConfirmWireDetails.js";
14
+ import { canCancelPayroll as ke } from "../helpers.js";
15
+ import { PrintChecks as Ee } from "../PrintChecks/PrintChecks.js";
16
+ import { PayrollOverviewPresentation as Ae } from "./PayrollOverviewPresentation.js";
17
+ import { PayrollOverviewStatus as f } from "./PayrollOverviewTypes.js";
18
+ import { useCompanyPaymentSpeed as Te } from "../../../hooks/useCompanyPaymentSpeed.js";
19
+ import { PAYROLL_PROCESSING_STATUS as y, componentEvents as c, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as Be, payrollWireEvents as Ue } from "../../../shared/constants.js";
20
+ import { BaseComponent as ve } from "../../Base/Base.js";
21
+ import { useBase as Ne } from "../../Base/useBase.js";
22
+ import { useComponentDictionary as qe, useI18n as Ie } from "../../../i18n/I18n.js";
23
+ import { readableStreamToBlob as We } from "../../../helpers/readableStreamToBlob.js";
24
+ import { openPdfInNewTab as Ye } from "../../../helpers/openPdfInNewTab.js";
25
+ import Me from "../../../hooks/useNumberFormatter.js";
26
+ import { useDateFormatter as xe } from "../../../hooks/useDateFormatter.js";
27
+ import { useComponentContext as Fe } from "../../../contexts/ComponentAdapter/useComponentContext.js";
28
+ import { renderErrorList as Ge } from "../../../helpers/apiErrorToList.js";
29
+ import { Flex as Ve } from "../../Common/Flex/Flex.js";
30
+ import { usePagination as je } from "../../../hooks/usePagination/usePagination.js";
31
+ import { useNonce as He } from "../../../contexts/NonceProvider/useNonce.js";
32
+ import { PayrollLoading as Ke } from "../../Common/PayrollLoading/PayrollLoading.js";
33
+ const ze = (r = []) => r.filter(
34
+ (i) => i.status === "unresolved" && i.unblockOptions && i.unblockOptions.length > 0
35
+ ), Je = (r = []) => {
36
+ const i = r.find((n) => n.status === "unresolved");
37
+ return i?.unblockOptions ? i.unblockOptions.find(
38
+ (n) => n.unblockType === "submit_wire"
37
39
  )?.metadata.wireInRequestUuid : void 0;
38
40
  };
39
- function Ot(s) {
40
- return /* @__PURE__ */ l(De, { ...s, children: /* @__PURE__ */ l(We, { ...s, children: s.children }) });
41
+ function At(r) {
42
+ return /* @__PURE__ */ l(ve, { ...r, children: /* @__PURE__ */ l(Qe, { ...r, children: r.children }) });
41
43
  }
42
- const We = ({
43
- companyId: s,
44
- payrollId: n,
45
- dictionary: _,
46
- onEvent: o,
47
- alerts: N,
48
- withReimbursements: I = !0,
49
- ConfirmWireDetailsComponent: Y = we
44
+ const Qe = ({
45
+ companyId: r,
46
+ payrollId: i,
47
+ dictionary: C,
48
+ onEvent: n,
49
+ alerts: W,
50
+ withReimbursements: Y = !0,
51
+ ConfirmWireDetailsComponent: M = Ce,
52
+ readOnly: b = !1
50
53
  }) => {
51
- ke("Payroll.PayrollOverview", _), Ue("Payroll.PayrollOverview");
52
- const { baseSubmitHandler: D } = Ce(), { t: a } = fe("Payroll.PayrollOverview"), [p, d] = u(!1), [W, S] = u(!1), [M, O] = u(N || []), [C, F] = u({}), [P, f] = u(!1), { showBoundary: G } = Re(), k = Ae("currency"), y = Be(), { Button: x, UnorderedList: j, Text: U } = Te(), [E, g] = u(m.Viewing), { currentPage: V, itemsPerPage: H, getPaginationProps: K } = Ne({
53
- defaultItemsPerPage: 10
54
- }), { data: b, isFetching: A } = me(
54
+ qe("Payroll.PayrollOverview", C), Ie("Payroll.PayrollOverview");
55
+ const { baseSubmitHandler: k } = Ne(), { t: a } = Re("Payroll.PayrollOverview"), [p, S] = m(!1), [E, D] = m(!1), [x, h] = m(W || []), [A, F] = m({}), [w, P] = m(!1), { showBoundary: G } = Oe(), T = Me("currency"), d = xe(), { Button: V, UnorderedList: j, Text: B } = Fe(), [U, _] = m(f.Viewing), { currentPage: H, itemsPerPage: K, getPaginationProps: z } = je({
56
+ defaultItemsPerPage: 25
57
+ }), { data: g, isFetching: J } = we(
55
58
  {
56
- companyId: s,
57
- payrollId: n,
59
+ companyId: r,
60
+ payrollId: i,
58
61
  include: ["taxes", "benefits", "deductions", "totals", "payroll_taxes"],
59
- page: V,
60
- per: H,
62
+ page: H,
63
+ per: K,
61
64
  sortBy: "last_name"
62
65
  },
63
66
  {
64
67
  refetchInterval: p ? 5e3 : !1,
65
- placeholderData: pe,
66
- // Always refetch on mount so a partner QueryClient with a non-zero `staleTime`
67
- // can't serve a stale pre-calculation snapshot without refetching. SDK-1018.
68
- refetchOnMount: "always"
68
+ placeholderData: ge
69
69
  }
70
- ), e = b?.payrollShow, z = Ie(e?.submissionBlockers), R = Ye(e?.creditBlockers), { data: J } = Pe(
70
+ ), e = g?.payrollShow, Q = ze(e?.submissionBlockers), R = Je(e?.creditBlockers), { data: X } = he(
71
71
  {
72
72
  wireInRequestUuid: R || ""
73
73
  },
74
74
  { enabled: !!R }
75
- ), B = J?.wireInRequest, T = () => {
76
- o(c.RUN_PAYROLL_EDIT);
77
- }, Q = R && /* @__PURE__ */ l(
78
- Y,
75
+ ), v = X?.wireInRequest, N = () => {
76
+ n(c.RUN_PAYROLL_EDIT);
77
+ }, Z = R && /* @__PURE__ */ l(
78
+ M,
79
79
  {
80
- companyId: s,
80
+ companyId: r,
81
81
  wireInId: R,
82
- onEvent: (t, r) => {
83
- t === _e.PAYROLL_WIRE_FORM_DONE && f(!0), o(t, r);
82
+ onEvent: (t, s) => {
83
+ t === Ue.PAYROLL_WIRE_FORM_DONE && P(!0), n(t, s);
84
84
  }
85
85
  }
86
- ), X = /* @__PURE__ */ l(Oe, { companyId: s, payrollId: n, onEvent: o });
87
- L(() => {
88
- B?.status === "pending_review" && !P && f(!0);
89
- }, [B?.status, P]);
90
- const h = e?.checkDate;
91
- L(() => {
92
- if (h && P) {
93
- const t = y.formatShortWithYear(h);
94
- O([
86
+ ), $ = /* @__PURE__ */ l(Ee, { companyId: r, payrollId: i, onEvent: n });
87
+ O(() => {
88
+ v?.status === "pending_review" && !w && P(!0);
89
+ }, [v?.status, w]);
90
+ const L = e?.checkDate;
91
+ O(() => {
92
+ if (L && w) {
93
+ const t = d.formatShortWithYear(L);
94
+ h([
95
95
  {
96
96
  type: "success",
97
97
  title: a("alerts.wireDetailsSubmittedTitle"),
98
- content: /* @__PURE__ */ l(U, { children: a("alerts.wireDetailsSubmittedMessage", { checkDate: t }) }),
98
+ content: /* @__PURE__ */ l(B, { children: a("alerts.wireDetailsSubmittedMessage", { checkDate: t }) }),
99
99
  onDismiss: () => {
100
- f(!1);
100
+ P(!1);
101
101
  }
102
102
  }
103
103
  ]);
104
104
  }
105
- }, [P, h, a, y, U]), L(() => {
106
- e && (e.processingRequest?.status === w.submitting && !p && d(!0), p && (e.processed === !0 || e.processingRequest?.status === w.submit_success) && (o(c.RUN_PAYROLL_PROCESSED, {
105
+ }, [w, L, a, d, B]), O(() => {
106
+ e && (e.processingRequest?.status === y.submitting && !p && S(!0), p && (e.processed === !0 || e.processingRequest?.status === y.submit_success) && (n(c.RUN_PAYROLL_PROCESSED, {
107
107
  payPeriod: e.payPeriod,
108
- payrollUuid: n
109
- }), O([
108
+ payrollUuid: i
109
+ }), h([
110
110
  {
111
111
  type: "success",
112
112
  title: a("alerts.payrollProcessedTitle"),
113
113
  content: a("alerts.payrollProcessedMessage", {
114
- amount: k(Number(e.totals?.companyDebit)),
115
- date: y.formatShortWithYear(
114
+ amount: T(Number(e.totals?.companyDebit)),
115
+ date: d.formatShortWithYear(
116
116
  e.payrollStatusMeta?.expectedDebitTime ?? e.payrollDeadline
117
117
  )
118
118
  })
119
119
  }
120
- ]), f(!1), d(!1), S(!1)), p && e.processingRequest?.status === w.processing_failed && (o(c.RUN_PAYROLL_PROCESSING_FAILED), O([
120
+ ]), P(!1), S(!1), D(!1)), p && e.processingRequest?.status === y.processing_failed && (n(c.RUN_PAYROLL_PROCESSING_FAILED), h([
121
121
  {
122
122
  type: "error",
123
123
  title: a("alerts.payrollProcessingFailedTitle"),
124
- content: /* @__PURE__ */ le(qe, { flexDirection: "column", gap: 16, children: [
125
- /* @__PURE__ */ l(j, { items: ve(e.processingRequest.errors ?? []) }),
126
- /* @__PURE__ */ l(x, { variant: "secondary", onClick: T, children: a("alerts.payrollProcessingFailedCtaLabel") })
124
+ content: /* @__PURE__ */ ye(Ve, { flexDirection: "column", gap: 16, children: [
125
+ /* @__PURE__ */ l(j, { items: Ge(e.processingRequest.errors ?? []) }),
126
+ !b && /* @__PURE__ */ l(V, { variant: "secondary", onClick: N, children: a("alerts.payrollProcessingFailedCtaLabel") })
127
127
  ] })
128
128
  }
129
- ]), f(!1), d(!1), S(!1)));
129
+ ]), P(!1), S(!1), D(!1)));
130
130
  }, [
131
131
  e?.processingRequest?.status,
132
132
  e?.processed,
133
133
  p,
134
- o,
134
+ n,
135
135
  a,
136
- y,
137
- k,
136
+ d,
137
+ T,
138
138
  e?.totals?.companyDebit,
139
139
  e?.payrollStatusMeta?.expectedDebitTime,
140
- e?.payrollDeadline
140
+ e?.payrollDeadline,
141
+ b
141
142
  ]);
142
- const { data: Z } = de({
143
- companyId: s
144
- }), $ = Z.companyBankAccounts?.[0], { paymentSpeed: ee } = he(s), { mutateAsync: te, isPending: re } = ce(), { mutateAsync: se } = ue(), oe = ye();
143
+ const { data: ee } = De({
144
+ companyId: r
145
+ }), te = ee.companyBankAccounts?.[0], { paymentSpeed: se } = Te(r), { mutateAsync: oe, isPending: re } = be(), { mutateAsync: ne } = Se(), ie = _e(), ae = He(), [le, q] = m(
146
+ () => /* @__PURE__ */ new Set()
147
+ );
145
148
  if (!e)
146
- return /* @__PURE__ */ l(q, { title: a("dataLoadingTitle") });
147
- if (E === m.Viewing && !e.calculatedAt) {
148
- if (A)
149
- return /* @__PURE__ */ l(q, { title: a("dataLoadingTitle") });
149
+ return /* @__PURE__ */ l(Ke, { title: a("dataLoadingTitle") });
150
+ if (U === f.Viewing && !e.calculatedAt)
150
151
  throw new Error(a("alerts.payrollNotCalculated"));
151
- }
152
- const ne = K(b.httpMeta.response.headers, A), ie = e.payrollTaxes?.reduce(
153
- (t, r) => {
154
- if (!r.name) return t;
155
- const i = r.amount ?? 0;
156
- return t[r.name] = {
157
- employee: (t[r.name]?.employee ?? 0) + (r.employer ? 0 : i),
158
- employer: (t[r.name]?.employer ?? 0) + (r.employer ? i : 0)
152
+ const ce = z(g.httpMeta.response.headers, J), ue = e.payrollTaxes?.reduce(
153
+ (t, s) => {
154
+ if (!s.name) return t;
155
+ const o = s.amount ?? 0;
156
+ return t[s.name] = {
157
+ employee: (t[s.name]?.employee ?? 0) + (s.employer ? 0 : o),
158
+ employer: (t[s.name]?.employer ?? 0) + (s.employer ? o : 0)
159
159
  }, t;
160
160
  },
161
161
  {}
162
- ) || {};
163
- return /* @__PURE__ */ l(
164
- ge,
165
- {
166
- onEdit: T,
167
- onSubmit: async () => {
168
- await D(b, async () => {
169
- const t = await te({
170
- request: {
171
- companyId: s,
172
- payrollId: n,
173
- requestBody: {
174
- submissionBlockers: Object.entries(C).filter(
175
- ([r]) => Le.includes(r)
176
- ).map(([r, i]) => ({
177
- blockerType: r,
178
- selectedOption: i
179
- }))
180
- }
181
- }
182
- });
183
- o(c.RUN_PAYROLL_SUBMITTING), o(c.RUN_PAYROLL_SUBMITTED, t), d(!0), S(!0);
184
- });
185
- },
186
- onCancel: async () => {
187
- g(m.Cancelling), await D(b, async () => {
188
- try {
189
- const t = await se({
190
- request: {
191
- companyId: s,
192
- payrollId: n
193
- }
194
- });
195
- g(m.Cancelled), o(c.RUN_PAYROLL_CANCELLED, t);
196
- } catch (t) {
197
- throw g(m.Viewing), t;
162
+ ) || {}, me = async () => {
163
+ _(f.Cancelling), await k(g, async () => {
164
+ try {
165
+ const t = await ne({
166
+ request: {
167
+ companyId: r,
168
+ payrollId: i
198
169
  }
199
170
  });
200
- },
201
- onPayrollReceipt: () => {
202
- o(c.RUN_PAYROLL_RECEIPT_GET, { payrollId: n });
203
- },
204
- onPaystubDownload: async (t) => {
205
- const r = window.open("", "_blank");
206
- try {
207
- const i = await be(oe, { payrollId: n, employeeId: t });
208
- if (!i.value?.responseStream)
209
- throw new Error(a("alerts.paystubPdfError"));
210
- const ae = await Ee(i.value.responseStream, "application/pdf"), v = URL.createObjectURL(ae);
211
- r && (r.location.href = v), o(c.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId: t }), URL.revokeObjectURL(v);
212
- } catch (i) {
213
- r && r.close(), G(i instanceof Error ? i : new Error(String(i)));
171
+ _(f.Cancelled), n(c.RUN_PAYROLL_CANCELLED, t);
172
+ } catch (t) {
173
+ throw _(f.Viewing), t;
174
+ }
175
+ });
176
+ }, pe = () => {
177
+ n(c.RUN_PAYROLL_RECEIPT_GET, { payrollId: i });
178
+ }, de = async (t) => {
179
+ const s = Ye({ loadingMessage: a("downloadLoadingMessage"), nonce: ae });
180
+ q((o) => {
181
+ const u = new Set(o);
182
+ return u.add(t), u;
183
+ });
184
+ try {
185
+ const o = await Le(ie, { payrollId: i, employeeId: t });
186
+ if (!o.value?.responseStream)
187
+ throw s.close(), new Error(a("alerts.paystubPdfError"));
188
+ const u = await We(o.value.responseStream, "application/pdf");
189
+ s.navigate(u), n(c.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId: t });
190
+ } catch (o) {
191
+ s.close(), G(o instanceof Error ? o : new Error(String(o)));
192
+ } finally {
193
+ q((o) => {
194
+ if (!o.has(t)) return o;
195
+ const u = new Set(o);
196
+ return u.delete(t), u;
197
+ });
198
+ }
199
+ }, fe = async () => {
200
+ await k(g, async () => {
201
+ const t = await oe({
202
+ request: {
203
+ companyId: r,
204
+ payrollId: i,
205
+ requestBody: {
206
+ submissionBlockers: Object.entries(A).filter(
207
+ ([s]) => Be.includes(s)
208
+ ).map(([s, o]) => ({
209
+ blockerType: s,
210
+ selectedOption: o
211
+ }))
212
+ }
214
213
  }
215
- },
216
- status: re || W ? m.Submitting : E,
217
- isProcessed: e.processed === !0 || e.processingRequest?.status === w.submit_success,
218
- canCancel: Se(e),
214
+ });
215
+ n(c.RUN_PAYROLL_SUBMITTING), n(c.RUN_PAYROLL_SUBMITTED, t), S(!0), D(!0);
216
+ });
217
+ }, I = (() => {
218
+ if (!(E || p) && !(e.processed || e.processingRequest?.status === y.submit_success) && e.checkDate && e.payrollDeadline)
219
+ return {
220
+ type: "info",
221
+ title: a("alerts.directDepositDeadline", {
222
+ payDate: d.formatShortWithWeekday(e.checkDate),
223
+ ...d.formatWithTime(e.payrollDeadline)
224
+ }),
225
+ content: a("alerts.directDepositDeadlineText")
226
+ };
227
+ })(), Pe = [...x, ...I ? [I] : []];
228
+ return /* @__PURE__ */ l(
229
+ Ae,
230
+ {
231
+ onEdit: N,
232
+ onSubmit: fe,
233
+ onCancel: me,
234
+ onPayrollReceipt: pe,
235
+ onPaystubDownload: de,
236
+ status: re || E ? f.Submitting : U,
237
+ isProcessed: e.processed === !0 || e.processingRequest?.status === y.submit_success,
238
+ canCancel: ke(e) && !b,
239
+ canEdit: !b,
219
240
  payrollData: e,
220
- bankAccount: $,
221
- taxes: ie,
222
- alerts: M,
223
- submissionBlockers: z,
224
- selectedUnblockOptions: C,
225
- onUnblockOptionChange: (t, r) => {
226
- F((i) => ({ ...i, [t]: r }));
241
+ bankAccount: te,
242
+ taxes: ue,
243
+ alerts: Pe,
244
+ submissionBlockers: Q,
245
+ selectedUnblockOptions: A,
246
+ onUnblockOptionChange: (t, s) => {
247
+ F((o) => ({ ...o, [t]: s }));
227
248
  },
228
- wireInConfirmationRequest: Q,
229
- printChecksBanner: X,
230
- withReimbursements: I,
231
- paymentSpeed: ee,
232
- pagination: ne
249
+ wireInConfirmationRequest: Z,
250
+ printChecksBanner: $,
251
+ withReimbursements: Y,
252
+ paymentSpeed: se,
253
+ pagination: ce,
254
+ downloadingEmployeeIds: le
233
255
  }
234
256
  );
235
257
  };
236
258
  export {
237
- Ot as PayrollOverview
259
+ At as PayrollOverview
238
260
  };
239
261
  //# sourceMappingURL=PayrollOverview.js.map