@gusto/embedded-react-sdk 0.55.3 → 0.55.5

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 (99) hide show
  1. package/CHANGELOG.md +29 -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/Company/Locations/LocationsList/List.js +27 -25
  15. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  16. package/dist/components/Company/Locations/LocationsList/LocationsList.js +41 -36
  17. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  18. package/dist/components/Company/Locations/LocationsList/useLocationsList.d.ts +1 -0
  19. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  20. package/dist/components/Company/StateTaxes/StateTaxesForm/Form.d.ts +9 -2
  21. package/dist/components/Company/StateTaxes/StateTaxesForm/Form.js +19 -18
  22. package/dist/components/Company/StateTaxes/StateTaxesForm/Form.js.map +1 -1
  23. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +63 -62
  24. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
  25. package/dist/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.js +69 -65
  26. package/dist/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.js.map +1 -1
  27. package/dist/components/Company/StateTaxes/TaxRateManagement/toHistoryRows.js +30 -23
  28. package/dist/components/Company/StateTaxes/TaxRateManagement/toHistoryRows.js.map +1 -1
  29. package/dist/components/Company/StateTaxes/shared/RequirementFields.d.ts +8 -4
  30. package/dist/components/Company/StateTaxes/shared/RequirementFields.js +13 -12
  31. package/dist/components/Company/StateTaxes/shared/RequirementFields.js.map +1 -1
  32. package/dist/components/Company/StateTaxes/shared/prepareRequirements.d.ts +29 -0
  33. package/dist/components/Company/StateTaxes/shared/prepareRequirements.js +24 -0
  34. package/dist/components/Company/StateTaxes/shared/prepareRequirements.js.map +1 -0
  35. package/dist/components/Company/StateTaxes/shared/prepareRequirements.test.d.ts +1 -0
  36. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +68 -55
  37. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
  38. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +36 -35
  39. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
  40. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +84 -96
  41. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js.map +1 -1
  42. package/dist/components/Flow/Flow.js +22 -22
  43. package/dist/components/Flow/Flow.js.map +1 -1
  44. package/dist/components/Flow/useFlow.js +3 -3
  45. package/dist/components/InformationRequests/InformationRequests.d.ts +1 -1
  46. package/dist/components/InformationRequests/InformationRequests.js +66 -52
  47. package/dist/components/InformationRequests/InformationRequests.js.map +1 -1
  48. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +52 -50
  49. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  50. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
  51. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +86 -67
  52. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
  53. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +4 -0
  54. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.d.ts +1 -1
  55. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js +26 -21
  56. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js.map +1 -1
  57. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.d.ts +8 -1
  58. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +29 -17
  59. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
  60. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js +21 -18
  61. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js.map +1 -1
  62. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js +9 -7
  63. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js.map +1 -1
  64. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +2 -0
  65. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js.map +1 -1
  66. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +193 -191
  67. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  68. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +3 -2
  69. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +31 -31
  70. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  71. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +254 -243
  72. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  73. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +83 -76
  74. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  75. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +23 -22
  76. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  77. package/dist/components/Payroll/PayrollList/PayrollList.js +108 -97
  78. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  79. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +38 -37
  80. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  81. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +176 -167
  82. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  83. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +2 -1
  84. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +173 -164
  85. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  86. package/dist/helpers/openPdfInNewTab.d.ts +15 -0
  87. package/dist/helpers/openPdfInNewTab.js +28 -0
  88. package/dist/helpers/openPdfInNewTab.js.map +1 -0
  89. package/dist/i18n/en/Company.StateTaxes.json.js +1 -1
  90. package/dist/i18n/en/Payroll.OffCycleCreation.json.js +11 -9
  91. package/dist/i18n/en/Payroll.OffCycleCreation.json.js.map +1 -1
  92. package/dist/i18n/en/Payroll.OffCycleTaxWithholding.json.js +7 -7
  93. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +29 -27
  94. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
  95. package/dist/i18n/en/Payroll.PayrollOverview.json.js +43 -41
  96. package/dist/i18n/en/Payroll.PayrollOverview.json.js.map +1 -1
  97. package/dist/i18n/types.d.ts +20 -0
  98. package/dist/style.css +1 -1
  99. package/package.json +17 -17
@@ -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":";;;;;;;;;;;;;;;;;AAmBA,MAAMA,wBAAoC,IAAY;AAAA,EACpDC,EAAmB;AAAA,EACnBA,EAAmB;AAAA,EACnBA,EAAmB;AACrB,CAAC;AAED,SAASC,GACPC,GACAC,GACAC,GACS;AACT,MAAIF,EAAQ,UAAW,QAAO;AAE9B,QAAMG,IAAqBH,EAAQ,WAAW,YAC1C,IAAI,KAAKA,EAAQ,UAAU,SAAS,IACpC,MAEEI,IACJ,CAACJ,EAAQ,YAAYA,EAAQ,mBAAmBF,EAAmB,8BAE/DO,IACJJ,EAAS,WAAW,KACpBG,KACAF,KACAC,KACAD,KAAmBC,GAEfG,IACJN,EAAQ,YACR,CAAC,CAACA,EAAQ,kBACVH,EAA8B,IAAIG,EAAQ,cAAc;AAE1D,SAAO,CAAC,EAAEK,KAAkBC;AAC9B;AAyBO,MAAMC,KAA0B,CAAC;AAAA,EACtC,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,2BAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,6BAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,UAAApB;AAAA,EACA,gBAAAqB;AAAA,EACA,iBAAAC;AAAA,EACA,2BAAAC,KAA4B;AAAA,EAC5B,qBAAAC,KAAsB;AACxB,MAAoC;AAClC,QAAM,EAAE,KAAAC,IAAK,WAAAC,IAAW,QAAAC,GAAQ,YAAAC,GAAY,QAAAC,GAAQ,SAAAC,IAAS,MAAAC,IAAM,OAAAC,EAAA,IAAUC,GAAA;AAC7E,EAAAC,GAAQ,qBAAqB;AAC7B,QAAM,EAAE,EAAA,IAAMC,GAAe,qBAAqB,GAC5CC,IAAgBC,GAAA,GAChBC,IAAeC,GAAuB,IAAI,GAE1CC,IADcC,GAAwB,EAAE,KAAKH,GAAc,EACnC,SAAS,OAAO,GAExCrC,IAAkByC,EAAQ,MAAM;AACpC,UAAMC,IAAkBC,GAAuB,oBAAI,MAAM;AACzD,WAAOD,IAAkB,IAAI,KAAKA,CAAe,IAAI;AAAA,EACvD,GAAG,CAAA,CAAE,GAECE,IAA4BH;AAAA,IAChC,MAAM9B,EAAS,KAAK,CAAAb,MAAWD,GAAgBC,GAASC,GAAUC,CAAe,CAAC;AAAA,IAClF,CAACW,GAAUZ,GAAUC,CAAe;AAAA,EAAA,GAGhC,CAAC6C,GAAwBC,CAAyB,IAAIC,EAIzD;AAAA,IACD,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,WAAW;AAAA,EAAA,CACZ,GAEKC,KAAuB,CAACC,GAAmBC,MAAsB;AACrE,IAAAJ,EAA0B;AAAA,MACxB,QAAQ;AAAA,MACR,WAAAG;AAAA,MACA,WAAAC;AAAA,IAAA,CACD;AAAA,EACH,GAEMC,IAAwB,MAAM;AAClC,IAAAL,EAA0B;AAAA,MACxB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,WAAW;AAAA,IAAA,CACZ;AAAA,EACH,GAEMM,KAA2B,MAAM;AACrC,IAAIP,EAAuB,cACzBrC,EAAc,EAAE,aAAaqC,EAAuB,UAAA,CAAW,GAC/DM,EAAA;AAAA,EAEJ,GAEM,CAACE,GAA0BC,CAA2B,IAAIP,EAI7D;AAAA,IACD,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,WAAW;AAAA,EAAA,CACZ,GAEKQ,KAAyB,CAACN,GAAmBC,MAAsB;AACvE,IAAAI,EAA4B;AAAA,MAC1B,QAAQ;AAAA,MACR,WAAAL;AAAA,MACA,WAAAC;AAAA,IAAA,CACD;AAAA,EACH,GAEMM,IAA0B,MAAM;AACpC,IAAAF,EAA4B;AAAA,MAC1B,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,WAAW;AAAA,IAAA,CACZ;AAAA,EACH,GAEMG,KAA6B,MAAM;AACvC,IAAIJ,EAAyB,cAC3B5C,EAAgB,EAAE,aAAa4C,EAAyB,UAAA,CAAW,GACnEG,EAAA;AAAA,EAEJ,GAEME,IAAkB,CAACC,GAA+BC,MAAgC;AACtF,UAAMC,IAAqB1B,EAAc,YAAYwB,CAAS,GACxDG,IAAmB3B,EAAc,oBAAoByB,CAAO;AAElE,WAAO;AAAA,MACL,WAAWC;AAAA,MACX,SAASC;AAAA,MACT,YAAY3B,EAAc,qBAAqBwB,GAAWC,GAAS,EAAE,eAAe,IAAM;AAAA,IAAA;AAAA,EAE9F,GAEMG,IAAqB,CAACjE,MAAqB;AAC/C,UAAM,EAAE,aAAAkE,GAAa,cAAAC,GAAc,WAAAC,GAAW,WAAAhB,MAAcpD;AAE5D,QAAIoE;AACF,aAAO;AAGT,UAAMC,IAA0BjD,MAAsB8C,GAEhDI,IADY,CAACtE,EAAQ,YACiBwB;AAE5C,WAAO2C,IACL,gBAAAI;AAAA,MAAC3C;AAAA,MAAA;AAAA,QACC,WAAWyC;AAAA,QACX,YAAYC;AAAA,QACZ,SAAS,MAAM;AACb,UAAA7D,EAAgB,EAAE,aAAAyD,GAAa,WAAAd,GAAW;AAAA,QAC5C;AAAA,QACA,OAAO,EAAE,kBAAkB;AAAA,QAC3B,SAAQ;AAAA,QAEP,YAAE,kBAAkB;AAAA,MAAA;AAAA,IAAA,IAGvB,gBAAAmB;AAAA,MAAC3C;AAAA,MAAA;AAAA,QACC,WAAWyC;AAAA,QACX,YAAYC;AAAA,QACZ,SAAS,MAAM;AACb,UAAA9D,EAAa,EAAE,aAAA0D,GAAa,WAAAd,GAAW;AAAA,QACzC;AAAA,QACA,OAAO,EAAE,iBAAiB;AAAA,QAC1B,SAAQ;AAAA,QAEP,YAAE,iBAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,EAG1B;AAEA,SACE,gBAAAmB,EAAC,OAAA,EAAI,KAAKhC,GAAc,WAAWiC,EAAO,WACxC,UAAA,gBAAAC,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAAI,YAAW,WAC9C,UAAA;AAAA,IAAA1D,KACC,gBAAAuD,EAAC,OAAA,EAAI,WAAWC,EAAO,gBACrB,UAAA,gBAAAD;AAAA,MAACtC;AAAA,MAAA;AAAA,QACC,QAAO;AAAA,QACP,OAAO,EAAE,kBAAkB;AAAA,QAC3B,WAAWhB;AAAA,MAAA;AAAA,IAAA,GAEf;AAAA,IAEDC,KACC,gBAAAqD,EAAC,OAAA,EAAI,WAAWC,EAAO,gBACrB,UAAA,gBAAAD;AAAA,MAACtC;AAAA,MAAA;AAAA,QACC,QAAO;AAAA,QACP,OAAO,EAAE,oBAAoB;AAAA,QAC7B,WAAWd;AAAA,MAAA;AAAA,IAAA,GAEf;AAAA,IAEF,gBAAAsD,EAACC,GAAA,EAAK,gBAAe,iBAAgB,YAAW,UAC9C,UAAA;AAAA,MAAA,gBAAAH,EAACxC,IAAA,EAAQ,IAAG,MAAM,UAAA,EAAE,OAAO,GAAE;AAAA,MAC7B,gBAAAwC;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,WAAWpD,EAAgB;AAAA,UAC3B,SAASA,EAAgB;AAAA,UACzB,mBAAmBA,EAAgB;AAAA,UACnC,iBAAiBA,EAAgB;AAAA,UACjC,SAASA,EAAgB;AAAA,UACzB,gBAAgB,EAAE,sBAAsB;AAAA,UACxC,cAAc,EAAE,oBAAoB;AAAA,UACpC,YAAY,EAAE,kBAAkB;AAAA,UAChC,aAAa,EAAE,mBAAmB;AAAA,UAClC,YAAY,EAAE,kBAAkB;AAAA,UAChC,kBAAkB,EAAE,wBAAwB;AAAA,UAC5C,cAAc,EAAE,oBAAoB;AAAA,UACpC,YAAYA,EAAgB,cAAA;AAAA,UAC5B,cAAcA,EAAgB,gBAAA;AAAA,QAAgB;AAAA,MAAA;AAAA,IAChD,GACF;AAAA,IAEA,gBAAAgD;AAAA,MAACK;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,YAAA9D;AAAA,QACA,YAAYA,GAAY;AAAA,QACxB,YAAY,MACVS,EAAgB,aACd,gBAAAgD;AAAA,UAACM;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,2BAA2B;AAAA,YACpC,aAAa,EAAE,iCAAiC;AAAA,UAAA;AAAA,QAAA,IAGlD,gBAAAN,EAACM,GAAA,EAAU,OAAO,EAAE,0BAA0B,GAAG;AAAA,QAGrD,MAAMhE;AAAA,QACN,SAAS;AAAA,UACP;AAAA,YACE,QAAQ,CAAC,EAAE,WAAAuC,QAAgB;AACzB,oBAAM,EAAE,WAAAS,GAAW,SAAAC,EAAA,IAAYF;AAAA,gBAC7BR,GAAW;AAAA,gBACXA,GAAW;AAAA,cAAA;AAGb,qBACE,gBAAAqB,EAAC,OAAA,EAAI,WAAWD,EAAO,eACpB,UAAA;AAAA,gBAAAX;AAAA,gBAAU;AAAA,gBAAIC;AAAA,gBACf,gBAAAS,EAACvC,MAAK,SAAQ,cAAa,MAAK,MAC7B,UAAAjB,EAAa,KAAK,CAAA+D,MAAYA,EAAS,SAAS1B,GAAW,eAAe,GACvE,QACFrC,EAAa,KAAK,CAAA+D,MAAYA,EAAS,SAAS1B,GAAW,eAAe,GACtE,WAAA,CACR;AAAA,cAAA,GACF;AAAA,YAEJ;AAAA,YACA,OAAO,EAAE,gBAAgB;AAAA,UAAA;AAAA,UAE3B;AAAA,YACE,QAAQ,CAAApD,MAAW+E,GAAoB/E,CAAO;AAAA,YAC9C,OAAO,EAAE,gBAAgB;AAAA,UAAA;AAAA,UAE3B;AAAA,YACE,QAAQ,CAAC,EAAE,WAAAgF,QAAgB3C,EAAc,8BAA8B2C,CAAS;AAAA,YAChF,OAAO,EAAE,gBAAgB;AAAA,UAAA;AAAA,UAE3B;AAAA,YACE,OAAO,EAAE,gBAAgB;AAAA,YACzB,QAAQ,CAAC,EAAE,iBAAAC,QACT5C,EAAc,8BAA8B4C,CAAe;AAAA,UAAA;AAAA,UAE/D;AAAA,YACE,OAAO,EAAE,gBAAgB;AAAA,YACzB,QAAQ,CAAAjF,MAAW;AACjB,oBAAMkF,IAAgB5D,GAAe;AAAA,gBACnC,CAAA6D,MAAQA,EAAK,gBAAgBnF,EAAQ;AAAA,cAAA;AAEvC,qBAAO,gBAAAuE,EAACa,IAAA,EAAoB,SAAApF,GAAkB,eAAAkF,EAAA,CAA8B;AAAA,YAC9E;AAAA,UAAA;AAAA,UAEF,GAAKzC,IAeD,CAAA,IAdA;AAAA,YACE;AAAA,cACE,OAAO;AAAA,cACP,QAAQ,CAACzC,MAAqB;AAC5B,sBAAMqF,IAASpB,EAAmBjE,CAAO;AACzC,uBAAKqF,IAEH,gBAAAd,EAACG,KAAK,eAAc,UAAS,YAAW,WAAU,KAAK,IACpD,UAAAW,EAAA,CACH,IAJkB;AAAA,cAMtB;AAAA,YAAA;AAAA,UACF;AAAA,QAED;AAAA,QAEP,OAAO,EAAE,mBAAmB;AAAA,QAC5B,UAAU,CAAArF,MAAW;AACnB,gBAAM,EAAE,aAAAkE,GAAa,WAAAE,GAAW,WAAAhB,EAAA,IAAcpD,GAExCqE,IAA0BjD,MAAsB8C,GAChDoB,IAA4BjE,MAAsB6C,GAElDmB,IAAS5C,IAAYwB,EAAmBjE,CAAO,IAAI;AAEzD,cAAIoE;AACF,mBACE,gBAAAG,EAAC,OAAA,EAAI,WAAWC,EAAO,kBACpB,UAAA1B,KACC,gBAAAyB;AAAA,cAAC1C;AAAA,cAAA;AAAA,gBACC,cAAW;AAAA,gBACX,eAAa;AAAA,gBACb,UAAU;AAAA,gBACV,YAAY;AAAA,gBACZ,WAAW2C,EAAO;AAAA,cAAA;AAAA,YAAA,GAGxB;AAIJ,gBAAM,EAAE,YAAYe,EAAA,IAAoB3B;AAAA,YACtCR,GAAW;AAAA,YACXA,GAAW;AAAA,UAAA,GAGPjD,IAAqBiD,GAAW,YAAY,IAAI,KAAKA,EAAU,SAAS,IAAI,MAE5EhD,KACJ,CAACJ,EAAQ,YACTA,EAAQ,mBAAmBF,EAAmB,8BAE1CO,IACJJ,EAAS,WAAW,KACpBG,MACAF,KACAC,KACAD,KAAmBC,GAEfG,KACJN,EAAQ,YACR,CAAC,CAACA,EAAQ,kBACVH,EAA8B,IAAIG,EAAQ,cAAc,GAEpDwF,IAAYnF,IACd;AAAA,YACE;AAAA,cACE,OAAO,EAAE,gBAAgB;AAAA,cACzB,SAAS,MAAM;AACb,gBAAA6C,GAAqBgB,GAAcqB,CAAe;AAAA,cACpD;AAAA,YAAA;AAAA,UACF,IAEFjF,KACE;AAAA,YACE;AAAA,cACE,OAAO,EAAE,kBAAkB;AAAA,cAC3B,SAAS,MAAM;AACb,gBAAAmD,GAAuBS,GAAcqB,CAAe;AAAA,cACtD;AAAA,YAAA;AAAA,UACF,IAEF,MAEAE,KAAiBD,MAAc;AAErC,iBACE,gBAAAf,EAAC,OAAA,EAAI,WAAWD,EAAO,kBACpB,UAAA;AAAA,YAAAa;AAAA,YACAI,KACC,gBAAAlB;AAAA,cAACmB;AAAA,cAAA;AAAA,gBACC,WAAWrF,IAAiBgE,IAA0BiB;AAAA,gBACtD,WAAW,EAAE,kBAAkB;AAAA,gBAC/B,OAAOE;AAAA,cAAA;AAAA,YAAA,IAGT1C,KACE,gBAAAyB;AAAA,cAAC1C;AAAA,cAAA;AAAA,gBACC,cAAW;AAAA,gBACX,eAAa;AAAA,gBACb,UAAU;AAAA,gBACV,YAAY;AAAA,gBACZ,WAAW2C,EAAO;AAAA,cAAA;AAAA,YAAA;AAAA,UACpB,GAGN;AAAA,QAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,gBAAAD;AAAA,MAACzC;AAAA,MAAA;AAAA,QACC,QAAQiB,EAAuB;AAAA,QAC/B,SAASM;AAAA,QACT,sBAAsBC;AAAA,QACtB,eAAe;AAAA,QACf,OAAO,EAAE,2BAA2B,EAAE,WAAWP,EAAuB,WAAW;AAAA,QACnF,oBAAoB,EAAE,8BAA8B;AAAA,QACpD,kBAAkB,EAAE,6BAA6B;AAAA,QAEhD,YAAE,wBAAwB;AAAA,MAAA;AAAA,IAAA;AAAA,IAE7B,gBAAAwB;AAAA,MAACzC;AAAA,MAAA;AAAA,QACC,QAAQyB,EAAyB;AAAA,QACjC,SAASG;AAAA,QACT,sBAAsBC;AAAA,QACtB,eAAe;AAAA,QACf,OAAO,EAAE,6BAA6B;AAAA,UACpC,WAAWJ,EAAyB;AAAA,QAAA,CACrC;AAAA,QACD,oBAAoB,EAAE,gCAAgC;AAAA,QACtD,kBAAkB,EAAE,+BAA+B;AAAA,QAElD,YAAE,0BAA0B;AAAA,MAAA;AAAA,IAAA;AAAA,IAE9B9B,MACC,gBAAA8C,EAAC,OAAA,EAAI,WAAWC,EAAO,aACrB,UAAA,gBAAAD;AAAA,MAAC7C;AAAA,MAAA;AAAA,QACC,QACE,gBAAA6C;AAAA,UAAC5C;AAAA,UAAA;AAAA,YACC,OAAO,EAAE,mBAAmB;AAAA,YAC5B,aAAa,EAAE,yBAAyB;AAAA,UAAA;AAAA,QAAA;AAAA,QAG5C,0BACGC,GAAA,EAAO,SAAQ,aAAY,SAAShB,GAClC,UAAA,EAAE,oBAAoB,EAAA,CACzB;AAAA,MAAA;AAAA,IAAA,EAEJ,CACF;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;"}
@@ -1,252 +1,261 @@
1
1
  import { jsx as l, jsxs as ye } from "react/jsx-runtime";
2
- import { usePayrollsSubmitMutation as Pe } from "@gusto/embedded-api/react-query/payrollsSubmit";
3
- import { usePayrollsCancelMutation as be } from "@gusto/embedded-api/react-query/payrollsCancel";
4
- import { usePayrollsGet as Re } from "@gusto/embedded-api/react-query/payrollsGet";
5
- import { keepPreviousData as Se } from "@tanstack/react-query";
6
- import { useTranslation as we } from "react-i18next";
7
- import { useBankAccountsGetSuspense as he } from "@gusto/embedded-api/react-query/bankAccountsGet";
8
- import { useWireInRequestsGet as De } from "@gusto/embedded-api/react-query/wireInRequestsGet";
9
- import { useState as p, useEffect as _ } from "react";
10
- import { useGustoEmbeddedContext as ge } from "@gusto/embedded-api/react-query/_context";
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
11
  import { payrollsGetPayStub as Le } from "@gusto/embedded-api/funcs/payrollsGetPayStub";
12
- import { useErrorBoundary as _e } from "react-error-boundary";
13
- import { ConfirmWireDetails as Oe } from "../ConfirmWireDetails/ConfirmWireDetails.js";
14
- import { canCancelPayroll as Ce } from "../helpers.js";
15
- import { PrintChecks as ke } from "../PrintChecks/PrintChecks.js";
16
- import { PayrollOverviewPresentation as Ue } from "./PayrollOverviewPresentation.js";
17
- import { PayrollOverviewStatus as d } from "./PayrollOverviewTypes.js";
18
- import { useCompanyPaymentSpeed as Ae } from "../../../hooks/useCompanyPaymentSpeed.js";
19
- import { PAYROLL_PROCESSING_STATUS as y, componentEvents as c, PAYROLL_RESOLVABLE_SUBMISSION_BLOCKER_TYPES as Ee, payrollWireEvents as Te } from "../../../shared/constants.js";
20
- import { BaseComponent as Be } from "../../Base/Base.js";
21
- import { useBase as ve } from "../../Base/useBase.js";
22
- import { useComponentDictionary as qe, useI18n as Ne } from "../../../i18n/I18n.js";
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
23
  import { readableStreamToBlob as We } from "../../../helpers/readableStreamToBlob.js";
24
- import Ie from "../../../hooks/useNumberFormatter.js";
25
- import { useDateFormatter as Ye } from "../../../hooks/useDateFormatter.js";
26
- import { useComponentContext as Me } from "../../../contexts/ComponentAdapter/useComponentContext.js";
27
- import { renderErrorList as Fe } from "../../../helpers/apiErrorToList.js";
28
- import { Flex as xe } from "../../Common/Flex/Flex.js";
29
- import { usePagination as Ge } from "../../../hooks/usePagination/usePagination.js";
30
- import { PayrollLoading as I } from "../../Common/PayrollLoading/PayrollLoading.js";
31
- const je = (s = []) => s.filter(
32
- (n) => n.status === "unresolved" && n.unblockOptions && n.unblockOptions.length > 0
33
- ), Ve = (s = []) => {
34
- const n = s.find((o) => o.status === "unresolved");
35
- return n?.unblockOptions ? n.unblockOptions.find(
36
- (o) => o.unblockType === "submit_wire"
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 Lt(s) {
40
- return /* @__PURE__ */ l(Be, { ...s, children: /* @__PURE__ */ l(He, { ...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 He = ({
43
- companyId: s,
44
- payrollId: n,
45
- dictionary: O,
46
- onEvent: o,
47
- alerts: Y,
48
- withReimbursements: M = !0,
49
- ConfirmWireDetailsComponent: F = Oe,
50
- readOnly: P = !1
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
51
53
  }) => {
52
- qe("Payroll.PayrollOverview", O), Ne("Payroll.PayrollOverview");
53
- const { baseSubmitHandler: C } = ve(), { t: i } = we("Payroll.PayrollOverview"), [u, b] = p(!1), [k, h] = p(!1), [x, D] = p(Y || []), [U, G] = p({}), [R, f] = p(!1), { showBoundary: j } = _e(), A = Ie("currency"), m = Ye(), { Button: V, UnorderedList: H, Text: E } = Me(), [T, g] = p(d.Viewing), { currentPage: K, itemsPerPage: z, getPaginationProps: J } = Ge({
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({
54
56
  defaultItemsPerPage: 25
55
- }), { data: S, isFetching: B } = Re(
57
+ }), { data: g, isFetching: J } = we(
56
58
  {
57
- companyId: s,
58
- payrollId: n,
59
+ companyId: r,
60
+ payrollId: i,
59
61
  include: ["taxes", "benefits", "deductions", "totals", "payroll_taxes"],
60
- page: K,
61
- per: z,
62
+ page: H,
63
+ per: K,
62
64
  sortBy: "last_name"
63
65
  },
64
66
  {
65
- refetchInterval: u ? 5e3 : !1,
66
- placeholderData: Se,
67
- // Always refetch on mount so a partner QueryClient with a non-zero `staleTime`
68
- // can't serve a stale pre-calculation snapshot without refetching. SDK-1018.
69
- refetchOnMount: "always"
67
+ refetchInterval: p ? 5e3 : !1,
68
+ placeholderData: ge
70
69
  }
71
- ), e = S?.payrollShow, Q = je(e?.submissionBlockers), w = Ve(e?.creditBlockers), { data: X } = De(
70
+ ), e = g?.payrollShow, Q = ze(e?.submissionBlockers), R = Je(e?.creditBlockers), { data: X } = he(
72
71
  {
73
- wireInRequestUuid: w || ""
72
+ wireInRequestUuid: R || ""
74
73
  },
75
- { enabled: !!w }
76
- ), v = X?.wireInRequest, q = () => {
77
- o(c.RUN_PAYROLL_EDIT);
78
- }, Z = w && /* @__PURE__ */ l(
79
- F,
74
+ { enabled: !!R }
75
+ ), v = X?.wireInRequest, N = () => {
76
+ n(c.RUN_PAYROLL_EDIT);
77
+ }, Z = R && /* @__PURE__ */ l(
78
+ M,
80
79
  {
81
- companyId: s,
82
- wireInId: w,
83
- onEvent: (t, r) => {
84
- t === Te.PAYROLL_WIRE_FORM_DONE && f(!0), o(t, r);
80
+ companyId: r,
81
+ wireInId: R,
82
+ onEvent: (t, s) => {
83
+ t === Ue.PAYROLL_WIRE_FORM_DONE && P(!0), n(t, s);
85
84
  }
86
85
  }
87
- ), $ = /* @__PURE__ */ l(ke, { companyId: s, payrollId: n, onEvent: o });
88
- _(() => {
89
- v?.status === "pending_review" && !R && f(!0);
90
- }, [v?.status, R]);
86
+ ), $ = /* @__PURE__ */ l(Ee, { companyId: r, payrollId: i, onEvent: n });
87
+ O(() => {
88
+ v?.status === "pending_review" && !w && P(!0);
89
+ }, [v?.status, w]);
91
90
  const L = e?.checkDate;
92
- _(() => {
93
- if (L && R) {
94
- const t = m.formatShortWithYear(L);
95
- D([
91
+ O(() => {
92
+ if (L && w) {
93
+ const t = d.formatShortWithYear(L);
94
+ h([
96
95
  {
97
96
  type: "success",
98
- title: i("alerts.wireDetailsSubmittedTitle"),
99
- content: /* @__PURE__ */ l(E, { children: i("alerts.wireDetailsSubmittedMessage", { checkDate: t }) }),
97
+ title: a("alerts.wireDetailsSubmittedTitle"),
98
+ content: /* @__PURE__ */ l(B, { children: a("alerts.wireDetailsSubmittedMessage", { checkDate: t }) }),
100
99
  onDismiss: () => {
101
- f(!1);
100
+ P(!1);
102
101
  }
103
102
  }
104
103
  ]);
105
104
  }
106
- }, [R, L, i, m, E]), _(() => {
107
- e && (e.processingRequest?.status === y.submitting && !u && b(!0), u && (e.processed === !0 || e.processingRequest?.status === y.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, {
108
107
  payPeriod: e.payPeriod,
109
- payrollUuid: n
110
- }), D([
108
+ payrollUuid: i
109
+ }), h([
111
110
  {
112
111
  type: "success",
113
- title: i("alerts.payrollProcessedTitle"),
114
- content: i("alerts.payrollProcessedMessage", {
115
- amount: A(Number(e.totals?.companyDebit)),
116
- date: m.formatShortWithYear(
112
+ title: a("alerts.payrollProcessedTitle"),
113
+ content: a("alerts.payrollProcessedMessage", {
114
+ amount: T(Number(e.totals?.companyDebit)),
115
+ date: d.formatShortWithYear(
117
116
  e.payrollStatusMeta?.expectedDebitTime ?? e.payrollDeadline
118
117
  )
119
118
  })
120
119
  }
121
- ]), f(!1), b(!1), h(!1)), u && e.processingRequest?.status === y.processing_failed && (o(c.RUN_PAYROLL_PROCESSING_FAILED), D([
120
+ ]), P(!1), S(!1), D(!1)), p && e.processingRequest?.status === y.processing_failed && (n(c.RUN_PAYROLL_PROCESSING_FAILED), h([
122
121
  {
123
122
  type: "error",
124
- title: i("alerts.payrollProcessingFailedTitle"),
125
- content: /* @__PURE__ */ ye(xe, { flexDirection: "column", gap: 16, children: [
126
- /* @__PURE__ */ l(H, { items: Fe(e.processingRequest.errors ?? []) }),
127
- !P && /* @__PURE__ */ l(V, { variant: "secondary", onClick: q, children: i("alerts.payrollProcessingFailedCtaLabel") })
123
+ title: a("alerts.payrollProcessingFailedTitle"),
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") })
128
127
  ] })
129
128
  }
130
- ]), f(!1), b(!1), h(!1)));
129
+ ]), P(!1), S(!1), D(!1)));
131
130
  }, [
132
131
  e?.processingRequest?.status,
133
132
  e?.processed,
134
- u,
135
- o,
136
- i,
137
- m,
138
- A,
133
+ p,
134
+ n,
135
+ a,
136
+ d,
137
+ T,
139
138
  e?.totals?.companyDebit,
140
139
  e?.payrollStatusMeta?.expectedDebitTime,
141
140
  e?.payrollDeadline,
142
- P
141
+ b
143
142
  ]);
144
- const { data: ee } = he({
145
- companyId: s
146
- }), te = ee.companyBankAccounts?.[0], { paymentSpeed: re } = Ae(s), { mutateAsync: se, isPending: oe } = Pe(), { mutateAsync: ne } = be(), ie = ge();
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
+ );
147
148
  if (!e)
148
- return /* @__PURE__ */ l(I, { title: i("dataLoadingTitle") });
149
- if (T === d.Viewing && !e.calculatedAt) {
150
- if (B)
151
- return /* @__PURE__ */ l(I, { title: i("dataLoadingTitle") });
152
- throw new Error(i("alerts.payrollNotCalculated"));
153
- }
154
- const ae = J(S.httpMeta.response.headers, B), le = e.payrollTaxes?.reduce(
155
- (t, r) => {
156
- if (!r.name) return t;
157
- const a = r.amount ?? 0;
158
- return t[r.name] = {
159
- employee: (t[r.name]?.employee ?? 0) + (r.employer ? 0 : a),
160
- employer: (t[r.name]?.employer ?? 0) + (r.employer ? a : 0)
149
+ return /* @__PURE__ */ l(Ke, { title: a("dataLoadingTitle") });
150
+ if (U === f.Viewing && !e.calculatedAt)
151
+ throw new Error(a("alerts.payrollNotCalculated"));
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)
161
159
  }, t;
162
160
  },
163
161
  {}
164
- ) || {}, ce = async () => {
165
- g(d.Cancelling), await C(S, async () => {
162
+ ) || {}, me = async () => {
163
+ _(f.Cancelling), await k(g, async () => {
166
164
  try {
167
165
  const t = await ne({
168
166
  request: {
169
- companyId: s,
170
- payrollId: n
167
+ companyId: r,
168
+ payrollId: i
171
169
  }
172
170
  });
173
- g(d.Cancelled), o(c.RUN_PAYROLL_CANCELLED, t);
171
+ _(f.Cancelled), n(c.RUN_PAYROLL_CANCELLED, t);
174
172
  } catch (t) {
175
- throw g(d.Viewing), t;
173
+ throw _(f.Viewing), t;
176
174
  }
177
175
  });
178
- }, ue = () => {
179
- o(c.RUN_PAYROLL_RECEIPT_GET, { payrollId: n });
180
- }, me = async (t) => {
181
- const r = window.open("", "_blank");
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
+ });
182
184
  try {
183
- const a = await Le(ie, { payrollId: n, employeeId: t });
184
- if (!a.value?.responseStream)
185
- throw new Error(i("alerts.paystubPdfError"));
186
- const fe = await We(a.value.responseStream, "application/pdf"), W = URL.createObjectURL(fe);
187
- r && (r.location.href = W), o(c.RUN_PAYROLL_PDF_PAYSTUB_VIEWED, { employeeId: t }), URL.revokeObjectURL(W);
188
- } catch (a) {
189
- r && r.close(), j(a instanceof Error ? a : new Error(String(a)));
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
+ });
190
198
  }
191
- }, pe = async () => {
192
- await C(S, async () => {
193
- const t = await se({
199
+ }, fe = async () => {
200
+ await k(g, async () => {
201
+ const t = await oe({
194
202
  request: {
195
- companyId: s,
196
- payrollId: n,
203
+ companyId: r,
204
+ payrollId: i,
197
205
  requestBody: {
198
- submissionBlockers: Object.entries(U).filter(
199
- ([r]) => Ee.includes(r)
200
- ).map(([r, a]) => ({
201
- blockerType: r,
202
- selectedOption: a
206
+ submissionBlockers: Object.entries(A).filter(
207
+ ([s]) => Be.includes(s)
208
+ ).map(([s, o]) => ({
209
+ blockerType: s,
210
+ selectedOption: o
203
211
  }))
204
212
  }
205
213
  }
206
214
  });
207
- o(c.RUN_PAYROLL_SUBMITTING), o(c.RUN_PAYROLL_SUBMITTED, t), b(!0), h(!0);
215
+ n(c.RUN_PAYROLL_SUBMITTING), n(c.RUN_PAYROLL_SUBMITTED, t), S(!0), D(!0);
208
216
  });
209
- }, N = (() => {
210
- if (!(k || u) && !(e.processed || e.processingRequest?.status === y.submit_success) && e.checkDate && e.payrollDeadline)
217
+ }, I = (() => {
218
+ if (!(E || p) && !(e.processed || e.processingRequest?.status === y.submit_success) && e.checkDate && e.payrollDeadline)
211
219
  return {
212
220
  type: "info",
213
- title: i("alerts.directDepositDeadline", {
214
- payDate: m.formatShortWithWeekday(e.checkDate),
215
- ...m.formatWithTime(e.payrollDeadline)
221
+ title: a("alerts.directDepositDeadline", {
222
+ payDate: d.formatShortWithWeekday(e.checkDate),
223
+ ...d.formatWithTime(e.payrollDeadline)
216
224
  }),
217
- content: i("alerts.directDepositDeadlineText")
225
+ content: a("alerts.directDepositDeadlineText")
218
226
  };
219
- })(), de = [...x, ...N ? [N] : []];
227
+ })(), Pe = [...x, ...I ? [I] : []];
220
228
  return /* @__PURE__ */ l(
221
- Ue,
229
+ Ae,
222
230
  {
223
- onEdit: q,
224
- onSubmit: pe,
225
- onCancel: ce,
226
- onPayrollReceipt: ue,
227
- onPaystubDownload: me,
228
- status: oe || k ? d.Submitting : T,
231
+ onEdit: N,
232
+ onSubmit: fe,
233
+ onCancel: me,
234
+ onPayrollReceipt: pe,
235
+ onPaystubDownload: de,
236
+ status: re || E ? f.Submitting : U,
229
237
  isProcessed: e.processed === !0 || e.processingRequest?.status === y.submit_success,
230
- canCancel: Ce(e) && !P,
231
- canEdit: !P,
238
+ canCancel: ke(e) && !b,
239
+ canEdit: !b,
232
240
  payrollData: e,
233
241
  bankAccount: te,
234
- taxes: le,
235
- alerts: de,
242
+ taxes: ue,
243
+ alerts: Pe,
236
244
  submissionBlockers: Q,
237
- selectedUnblockOptions: U,
238
- onUnblockOptionChange: (t, r) => {
239
- G((a) => ({ ...a, [t]: r }));
245
+ selectedUnblockOptions: A,
246
+ onUnblockOptionChange: (t, s) => {
247
+ F((o) => ({ ...o, [t]: s }));
240
248
  },
241
249
  wireInConfirmationRequest: Z,
242
250
  printChecksBanner: $,
243
- withReimbursements: M,
244
- paymentSpeed: re,
245
- pagination: ae
251
+ withReimbursements: Y,
252
+ paymentSpeed: se,
253
+ pagination: ce,
254
+ downloadingEmployeeIds: le
246
255
  }
247
256
  );
248
257
  };
249
258
  export {
250
- Lt as PayrollOverview
259
+ At as PayrollOverview
251
260
  };
252
261
  //# sourceMappingURL=PayrollOverview.js.map