@gusto/embedded-react-sdk 0.23.1 → 0.24.1
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.
- package/CHANGELOG.md +31 -0
- package/dist/components/Common/PayrollLoading/PayrollLoading.d.ts +2 -0
- package/dist/components/Common/PayrollLoading/PayrollLoading.js +19 -0
- package/dist/components/Common/PayrollLoading/PayrollLoading.js.map +1 -0
- package/dist/components/Common/PayrollLoading/PayrollLoadingTypes.d.ts +5 -0
- package/dist/components/Common/PayrollLoading/index.d.ts +3 -0
- package/dist/components/Common/SignatureForm/SignatureForm.js +11 -12
- package/dist/components/Common/SignatureForm/SignatureForm.js.map +1 -1
- package/dist/components/Common/SignatureForm/SignatureFormActions.js +1 -1
- package/dist/components/Common/SignatureForm/SignatureFormFields.js +2 -2
- package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
- package/dist/components/Common/index.d.ts +1 -0
- package/dist/components/Company/AssignSignatory/AssignSignatory.js +1 -1
- package/dist/components/Company/AssignSignatory/AssignSignatorySelection.js +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatory.js +1 -1
- package/dist/components/Company/AssignSignatory/CreateSignatory/CreateSignatoryForm.js +12 -12
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatory.js +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/InviteSignatoryForm.js +1 -1
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -4
- package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -6
- package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/Form.js +5 -6
- package/dist/components/Company/BankAccount/BankAccountForm/Form.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -4
- package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
- package/dist/components/Company/BankAccount/BankAccountVerify/Form.js +5 -6
- package/dist/components/Company/BankAccount/BankAccountVerify/Form.js.map +1 -1
- package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js +2 -2
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Company/DocumentSigner/SignatureForm/SignatureForm.js +2 -2
- package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js +3 -4
- package/dist/components/Company/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
- package/dist/components/Company/FederalTaxes/FederalTaxes.js +2 -2
- package/dist/components/Company/FederalTaxes/Form.js +3 -4
- package/dist/components/Company/FederalTaxes/Form.js.map +1 -1
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js +8 -9
- package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Company/Industry/Context.js +6 -7
- package/dist/components/Company/Industry/Context.js.map +1 -1
- package/dist/components/Company/Locations/LocationForm/Form.js +1 -1
- package/dist/components/Company/Locations/LocationForm/LocationForm.js +2 -2
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -4
- package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
- package/dist/components/Company/Locations/LocationsList/LocationsList.js +2 -2
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -4
- package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/Completed.js +2 -3
- package/dist/components/Company/OnboardingOverview/Completed.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/MissingRequirements.js +2 -3
- package/dist/components/Company/OnboardingOverview/MissingRequirements.js.map +1 -1
- package/dist/components/Company/OnboardingOverview/OnboardingOverview.js +2 -2
- package/dist/components/Company/OnboardingOverview/context.js +3 -4
- package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
- package/dist/components/Company/PaySchedule/PaySchedule.js +2 -2
- package/dist/components/Company/PaySchedule/_parts/Edit.js +15 -15
- package/dist/components/Company/PaySchedule/_parts/Head.js +8 -9
- package/dist/components/Company/PaySchedule/_parts/Head.js.map +1 -1
- package/dist/components/Company/PaySchedule/_parts/List.js +11 -12
- package/dist/components/Company/PaySchedule/_parts/List.js.map +1 -1
- package/dist/components/Company/PaySchedule/usePaySchedule.js +5 -6
- package/dist/components/Company/PaySchedule/usePaySchedule.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -4
- package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
- package/dist/components/Contractor/Address/Address.js +2 -2
- package/dist/components/Contractor/Address/Form.js +1 -1
- package/dist/components/Contractor/Address/useAddress.js +5 -6
- package/dist/components/Contractor/Address/useAddress.js.map +1 -1
- package/dist/components/Contractor/ContractorList/index.js +17 -17
- package/dist/components/Contractor/PaymentMethod/BankAccountForm.js +2 -2
- package/dist/components/Contractor/PaymentMethod/PaymentTypeForm.js +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js +13 -14
- package/dist/components/Contractor/Payments/CreatePayment/CreatePaymentPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/EditContractorPaymentPresentation.js +10 -10
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js +9 -10
- package/dist/components/Contractor/Payments/CreatePayment/PreviewPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js +2 -3
- package/dist/components/Contractor/Payments/PaymentHistory/PaymentHistoryPresentation.js.map +1 -1
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +12 -13
- package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
- package/dist/components/Contractor/Profile/ContractorProfileForm.js +15 -15
- package/dist/components/Contractor/Profile/useContractorProfile.js +2 -3
- package/dist/components/Contractor/Profile/useContractorProfile.js.map +1 -1
- package/dist/components/Contractor/Submit/Submit.js +1 -1
- package/dist/components/Employee/Compensation/Edit.js +14 -14
- package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js +10 -11
- package/dist/components/Employee/Deductions/DeductionsForm/ChildSupportForm.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js +11 -12
- package/dist/components/Employee/Deductions/DeductionsForm/CustomDeductionForm.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js +11 -12
- package/dist/components/Employee/Deductions/DeductionsForm/GarnishmentForm.js.map +1 -1
- package/dist/components/Employee/Deductions/DeductionsList/DeductionsList.js +1 -1
- package/dist/components/Employee/DocumentSigner/DocumentList/DocumentList.js +1 -1
- package/dist/components/Employee/DocumentSigner/DocumentList/List.js +2 -3
- package/dist/components/Employee/DocumentSigner/DocumentList/List.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js +3 -4
- package/dist/components/Employee/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/SignatureForm/SignatureForm.js +1 -1
- package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js +3 -4
- package/dist/components/Employee/DocumentSigner/SignatureForm/useSignatureForm.js.map +1 -1
- package/dist/components/Employee/EmployeeList/EmployeeList.js +3 -4
- package/dist/components/Employee/EmployeeList/EmployeeList.js.map +1 -1
- package/dist/components/Employee/EmployeeList/Head.js +2 -3
- package/dist/components/Employee/EmployeeList/Head.js.map +1 -1
- package/dist/components/Employee/EmployeeList/useEmployeeList.js +3 -4
- package/dist/components/Employee/EmployeeList/useEmployeeList.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/FederalForm.js +9 -7
- package/dist/components/Employee/FederalTaxes/FederalForm.js.map +1 -1
- package/dist/components/Employee/FederalTaxes/useFederalTaxes.js +3 -4
- package/dist/components/Employee/FederalTaxes/useFederalTaxes.js.map +1 -1
- package/dist/components/Employee/Landing/Landing.js +8 -8
- package/dist/components/Employee/OnboardingSummary/OnboardingSummary.js +7 -7
- package/dist/components/Employee/PaymentMethod/BankAccountEdit.js +2 -2
- package/dist/components/Employee/PaymentMethod/PaymentTypeForm.js +1 -1
- package/dist/components/Employee/PaymentMethod/Split.js +8 -8
- package/dist/components/Employee/PaymentMethod/usePaymentMethod.js +5 -6
- package/dist/components/Employee/PaymentMethod/usePaymentMethod.js.map +1 -1
- package/dist/components/Employee/Profile/AdminPersonalDetails.js +1 -1
- package/dist/components/Employee/Profile/HomeAddress.js +1 -1
- package/dist/components/Employee/Profile/PersonalDetailsInputs.js +2 -2
- package/dist/components/Employee/Profile/useProfile.js +3 -4
- package/dist/components/Employee/Profile/useProfile.js.map +1 -1
- package/dist/components/Employee/StateTaxes/useStateTaxes.js +3 -4
- package/dist/components/Employee/StateTaxes/useStateTaxes.js.map +1 -1
- package/dist/components/Employee/Taxes/FederalForm.js +8 -6
- package/dist/components/Employee/Taxes/FederalForm.js.map +1 -1
- package/dist/components/Employee/Taxes/useTaxes.js +3 -4
- package/dist/components/Employee/Taxes/useTaxes.js.map +1 -1
- package/dist/components/Flow/Flow.js +2 -3
- package/dist/components/Flow/Flow.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.d.ts +4 -4
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js +26 -21
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetails.js.map +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsForm/ConfirmWireDetailsForm.js +9 -9
- package/dist/components/Payroll/ConfirmWireDetails/index.d.ts +1 -1
- package/dist/components/Payroll/ConfirmWireDetails/types.d.ts +8 -1
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js +6 -7
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerAlerts.js.map +1 -1
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +2 -3
- package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.d.ts +2 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +56 -54
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +2 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +90 -91
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.d.ts +2 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +33 -31
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.d.ts +2 -1
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +72 -71
- package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +8 -9
- package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlow.d.ts +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlow.js +24 -18
- package/dist/components/Payroll/PayrollFlow/PayrollFlow.js.map +1 -1
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.d.ts +5 -0
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js +77 -51
- package/dist/components/Payroll/PayrollFlow/PayrollFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +17 -18
- package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.d.ts +4 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.js +29 -21
- package/dist/components/Payroll/PayrollLanding/PayrollLanding.js.map +1 -1
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.d.ts +5 -0
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +36 -26
- package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +16 -17
- package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.d.ts +4 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +70 -60
- package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +2 -1
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +237 -232
- package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js +2 -3
- package/dist/components/Payroll/PayrollOverview/SubmissionBlockers/FastAchSubmissionBlockerBanner.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.d.ts +2 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js +25 -15
- package/dist/components/Payroll/PayrollReceipts/PayrollReceipts.js.map +1 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.d.ts +2 -1
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +152 -138
- package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
- package/dist/components/Payroll/index.d.ts +1 -0
- package/dist/components/Payroll/usePreparedPayrollData.js +5 -6
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/contexts/ApiProvider/ApiProvider.d.ts +3 -1
- package/dist/contexts/ApiProvider/ApiProvider.js +26 -18
- package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
- package/dist/contexts/ComponentAdapter/componentAdapterTypes.d.ts +1 -0
- package/dist/contexts/ComponentAdapter/useComponentContext.d.ts +2 -0
- package/dist/contexts/ComponentAdapter/useComponentContext.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProvider.d.ts +2 -0
- package/dist/contexts/GustoProvider/GustoProvider.js +12 -11
- package/dist/contexts/GustoProvider/GustoProvider.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +24 -14
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/i18n/en/common.json.d.ts +1 -0
- package/dist/i18n/en/common.json.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/shared/constants.d.ts +1 -1
- package/dist/shared/constants.js +6 -5
- package/dist/shared/constants.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/i18next.d.ts +1 -0
- package/package.json +5 -5
package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { useRef } from 'react'\nimport type { EmployeeCompensations } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject'\nimport { Trans, useTranslation } from 'react-i18next'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getOvertimeHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '../PayrollBlocker/components/PayrollBlockerAlerts'\nimport styles from './PayrollConfigurationPresentation.module.scss'\nimport { useI18n } from '@/i18n'\nimport { DataView, Flex, FlexItem, Grid } from '@/components/Common'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport XCircle from '@/assets/icons/x-circle.svg?react'\nimport PlusCircle from '@/assets/icons/plus-circle.svg?react'\nimport { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport { useLoadingIndicator } from '@/contexts/LoadingIndicatorProvider/useLoadingIndicator'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\n\ninterface PayrollConfigurationPresentationProps {\n employeeCompensations: EmployeeCompensations[]\n employeeDetails: Employee[]\n payPeriod?: PayrollPayPeriodType\n paySchedule?: PayScheduleObject\n onCalculatePayroll: () => void\n onEdit: (employee: Employee) => void\n onToggleExclude: (employeeCompensation: PayrollEmployeeCompensationsType) => void\n onViewBlockers: () => void\n isOffCycle?: boolean\n alerts?: ReactNode\n payrollDeadlineNotice?: {\n label: string\n content?: ReactNode\n }\n isPending?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n pagination?: PaginationControlProps\n}\n\nconst getPayrollConfigurationTitle = (\n payPeriod: PayrollPayPeriodType | undefined,\n dateFormatter: ReturnType<typeof useDateFormatter>,\n) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n return dateFormatter.formatPayPeriod(payPeriod.startDate, payPeriod.endDate)\n }\n return { startDate: '', endDate: '' }\n}\n\nexport const PayrollConfigurationPresentation = ({\n employeeCompensations,\n employeeDetails,\n payPeriod,\n paySchedule,\n onEdit,\n onToggleExclude,\n onCalculatePayroll,\n onViewBlockers,\n isOffCycle = false,\n alerts,\n payrollDeadlineNotice,\n isPending,\n payrollBlockers = [],\n pagination,\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, LoadingSpinner, Alert } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const dateFormatter = useDateFormatter()\n const { LoadingIndicator } = useLoadingIndicator()\n const formatEmployeePayRate = useFormatEmployeePayRate()\n const containerRef = useRef<HTMLDivElement>(null)\n const breakpoints = useContainerBreakpoints({ ref: containerRef })\n const isDesktop = breakpoints.includes('small')\n\n const employeeMap = new Map(employeeDetails.map(employee => [employee.uuid, employee]))\n\n const getEmployeeName = (employeeUuid: string) => {\n const employee = employeeMap.get(employeeUuid)\n return employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : null\n }\n\n return (\n <div ref={containerRef} className={styles.container}>\n <Flex flexDirection=\"column\" gap={16}>\n <Flex\n flexDirection={isDesktop ? 'row' : 'column'}\n justifyContent={isDesktop ? 'space-between' : 'normal'}\n alignItems={isDesktop ? 'center' : 'stretch'}\n gap={isDesktop ? 0 : 16}\n >\n <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n <Text>\n <Trans\n i18nKey=\"description\"\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={getPayrollConfigurationTitle(payPeriod, dateFormatter)}\n />\n </Text>\n </FlexItem>\n <FlexItem flexGrow={isDesktop ? 0 : 0}>\n {isDesktop ? (\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isPending}\n >\n {t('calculatePayroll')}\n </Button>\n ) : (\n <Flex flexDirection=\"column\" justifyContent=\"normal\" alignItems=\"stretch\" gap={12}>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isPending}\n >\n {t('calculatePayroll')}\n </Button>\n </Flex>\n )}\n </FlexItem>\n </Flex>\n\n {(alerts || payrollDeadlineNotice) && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {payrollDeadlineNotice && (\n <Alert status=\"info\" label={payrollDeadlineNotice.label}>\n {payrollDeadlineNotice.content}\n </Alert>\n )}\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <LoadingIndicator>\n <Flex flexDirection=\"column\" alignItems=\"center\" gap={4}>\n <LoadingSpinner size=\"lg\" />\n <Heading as=\"h4\">{t('loadingTitle')}</Heading>\n <Text>{t('loadingDescription')}</Text>\n </Flex>\n </LoadingIndicator>\n ) : (\n <>\n <div className={styles.payrollBlockerContainer}>\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts\n blockers={payrollBlockers}\n onMultipleViewClick={onViewBlockers}\n />\n )}\n </div>\n <FlexItem>\n <Heading as=\"h3\">{t('hoursAndEarningsTitle')}</Heading>\n <Text>{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: <Text weight=\"semibold\">{t('tableColumns.employees')}</Text>,\n render: (item: EmployeeCompensations) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={8 as const}>\n <Text weight=\"semibold\">{getEmployeeName(item.employeeUuid || '')}</Text>\n {payRateDisplay && <Text variant=\"supporting\">{payRateDisplay}</Text>}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.hours')}</Text>,\n render: (item: EmployeeCompensations) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return <Text>{formatHoursDisplay(hours + overtimeHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.timeOff')}</Text>,\n render: (item: EmployeeCompensations) => {\n const ptoHours = getTotalPtoHours(item)\n return <Text>{formatHoursDisplay(ptoHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.additionalEarnings')}</Text>,\n render: (item: EmployeeCompensations) => {\n const earnings = getAdditionalEarnings(item)\n return <Text>{formatNumberAsCurrency(earnings)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.reimbursements')}</Text>,\n render: (item: EmployeeCompensations) => {\n const reimbursements = getReimbursements(item)\n return <Text>{formatNumberAsCurrency(reimbursements)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.totalPay')}</Text>,\n render: (item: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate,\n paySchedule,\n isOffCycle,\n )\n : 0\n return <Text>{formatNumberAsCurrency(calculatedGrossPay)}</Text>\n },\n },\n ]}\n data={employeeCompensations}\n itemMenu={(item: EmployeeCompensations) => (\n <HamburgerMenu\n items={[\n {\n label: t('editMenu.edit'),\n icon: <PencilSvg aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onEdit(employee)\n }\n },\n },\n {\n label: t(item.excluded ? 'editMenu.unskip' : 'editMenu.skip'),\n icon: item.excluded ? <PlusCircle aria-hidden /> : <XCircle aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onToggleExclude(item)\n }\n },\n },\n ]}\n triggerLabel={t('editMenu.edit')}\n />\n )}\n pagination={pagination}\n />\n </>\n )}\n </Flex>\n </div>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","dateFormatter","PayrollConfigurationPresentation","employeeCompensations","employeeDetails","paySchedule","onEdit","onToggleExclude","onCalculatePayroll","onViewBlockers","isOffCycle","alerts","payrollDeadlineNotice","isPending","payrollBlockers","pagination","Button","Heading","Text","Badge","LoadingSpinner","Alert","useComponentContext","useI18n","t","useTranslation","useDateFormatter","LoadingIndicator","useLoadingIndicator","formatEmployeePayRate","useFormatEmployeePayRate","containerRef","useRef","isDesktop","useContainerBreakpoints","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsx","styles","jsxs","Flex","FlexItem","Trans","Grid","Fragment","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","HamburgerMenu","PencilSvg","PlusCircle","XCircle"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsDA,MAAMA,KAA+B,CACnCC,GACAC,MAEID,GAAW,aAAaA,EAAU,UAC7BC,EAAc,gBAAgBD,EAAU,WAAWA,EAAU,OAAO,IAEtE,EAAE,WAAW,IAAI,SAAS,GAAA,GAGtBE,KAAmC,CAAC;AAAA,EAC/C,uBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAJ;AAAA,EACA,aAAAK;AAAA,EACA,QAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,QAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC,IAAkB,CAAA;AAAA,EAClB,YAAAC;AACF,MAA6C;AAC3C,QAAM,EAAE,QAAAC,GAAQ,SAAAC,GAAS,MAAAC,GAAM,OAAAC,GAAO,gBAAAC,GAAgB,OAAAC,EAAA,IAAUC,EAAA;AAChE,EAAAC,EAAQ,8BAA8B;AACtC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,8BAA8B,GACrDxB,IAAgByB,GAAA,GAChB,EAAE,kBAAAC,EAAA,IAAqBC,GAAA,GACvBC,IAAwBC,EAAA,GACxBC,IAAeC,EAAuB,IAAI,GAE1CC,IADcC,GAAwB,EAAE,KAAKH,GAAc,EACnC,SAAS,OAAO,GAExCI,IAAc,IAAI,IAAI/B,EAAgB,IAAI,CAAAgC,MAAY,CAACA,EAAS,MAAMA,CAAQ,CAAC,CAAC,GAEhFC,IAAkB,CAACC,MAAyB;AAChD,UAAMF,IAAWD,EAAY,IAAIG,CAAY;AAC7C,WAAOF,IACHG,GAAc,EAAE,YAAYH,EAAS,WAAW,WAAWA,EAAS,SAAA,CAAU,IAC9E;AAAA,EACN;AAEA,SACE,gBAAAI,EAAC,OAAA,EAAI,KAAKT,GAAc,WAAWU,EAAO,WACxC,UAAA,gBAAAC,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,IAAA,gBAAAD;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,eAAeV,IAAY,QAAQ;AAAA,QACnC,gBAAgBA,IAAY,kBAAkB;AAAA,QAC9C,YAAYA,IAAY,WAAW;AAAA,QACnC,KAAKA,IAAY,IAAI;AAAA,QAErB,UAAA;AAAA,UAAA,gBAAAS,EAACE,GAAA,EACC,UAAA;AAAA,YAAA,gBAAAJ,EAACvB,GAAA,EAAQ,IAAG,MAAM,UAAAO,EAAE,WAAW,GAAE;AAAA,8BAChCN,GAAA,EACC,UAAA,gBAAAsB;AAAA,cAACK;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,GAAArB;AAAA,gBACA,YAAY,EAAE,aAAa,gBAAAgB,EAACtB,KAAK,QAAO,QAAO,IAAG,OAAA,CAAO,EAAA;AAAA,gBACzD,QAAQnB,GAA6BC,GAAWC,CAAa;AAAA,cAAA;AAAA,YAAA,EAC/D,CACF;AAAA,UAAA,GACF;AAAA,4BACC2C,GAAA,EAAS,UAAsB,GAC7B,UAAAX,IACC,gBAAAO;AAAA,YAACxB;AAAA,YAAA;AAAA,cACC,OAAOQ,EAAE,uBAAuB;AAAA,cAChC,SAAShB;AAAA,cACT,YAAYK;AAAA,cAEX,YAAE,kBAAkB;AAAA,YAAA;AAAA,UAAA,IAGvB,gBAAA2B,EAACG,GAAA,EAAK,eAAc,UAAS,gBAAe,UAAS,YAAW,WAAU,KAAK,IAC7E,UAAA,gBAAAH;AAAA,YAACxB;AAAA,YAAA;AAAA,cACC,OAAOQ,EAAE,uBAAuB;AAAA,cAChC,SAAShB;AAAA,cACT,YAAYK;AAAA,cAEX,YAAE,kBAAkB;AAAA,YAAA;AAAA,UAAA,GAEzB,EAAA,CAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,KAGAF,KAAUC,MACV,gBAAA8B,EAACI,KAAK,KAAK,IAAI,qBAAoB,OAChC,UAAA;AAAA,MAAAlC,KACC,gBAAA4B,EAACnB,KAAM,QAAO,QAAO,OAAOT,EAAsB,OAC/C,YAAsB,QAAA,CACzB;AAAA,MAEDD;AAAA,IAAA,GACH;AAAA,IAGDE,IACC,gBAAA2B,EAACb,GAAA,EACC,UAAA,gBAAAe,EAACC,GAAA,EAAK,eAAc,UAAS,YAAW,UAAS,KAAK,GACpD,UAAA;AAAA,MAAA,gBAAAH,EAACpB,GAAA,EAAe,MAAK,KAAA,CAAK;AAAA,wBACzBH,GAAA,EAAQ,IAAG,MAAM,UAAAO,EAAE,cAAc,GAAE;AAAA,MACpC,gBAAAgB,EAACtB,GAAA,EAAM,UAAAM,EAAE,oBAAoB,EAAA,CAAE;AAAA,IAAA,EAAA,CACjC,EAAA,CACF,IAEA,gBAAAkB,EAAAK,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAP,EAAC,SAAI,WAAWC,EAAO,yBACpB,UAAA3B,EAAgB,SAAS,KACxB,gBAAA0B;AAAA,QAACQ;AAAA,QAAA;AAAA,UACC,UAAUlC;AAAA,UACV,qBAAqBL;AAAA,QAAA;AAAA,MAAA,GAG3B;AAAA,wBACCmC,GAAA,EACC,UAAA;AAAA,QAAA,gBAAAJ,EAACvB,GAAA,EAAQ,IAAG,MAAM,UAAAO,EAAE,uBAAuB,GAAE;AAAA,QAC7C,gBAAAgB,EAACtB,GAAA,EAAM,UAAAM,EAAE,6BAA6B,EAAA,CAAE;AAAA,MAAA,GAC1C;AAAA,MAEA,gBAAAgB;AAAA,QAACS;AAAA,QAAA;AAAA,UACC,OAAOzB,EAAE,4BAA4B;AAAA,UACrC,SAAS;AAAA,YACP;AAAA,cACE,OAAO,gBAAAgB,EAACtB,GAAA,EAAK,QAAO,YAAY,UAAAM,EAAE,wBAAwB,GAAE;AAAA,cAC5D,QAAQ,CAAC0B,MAAgC;AACvC,sBAAMd,IAAWD,EAAY,IAAIe,EAAK,gBAAgB,EAAE,GAClDC,IAAiBtB,EAAsBO,CAAQ;AACrD,uBACE,gBAAAM,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA;AAAA,kBAAA,gBAAAH,EAACtB,KAAK,QAAO,YAAY,YAAgBgC,EAAK,gBAAgB,EAAE,GAAE;AAAA,kBACjEC,KAAkB,gBAAAX,EAACtB,GAAA,EAAK,SAAQ,cAAc,UAAAiC,GAAe;AAAA,kBAC7DD,EAAK,YAAY,gBAAAV,EAACrB,GAAA,EAAM,QAAO,WAAW,UAAAK,EAAE,cAAc,EAAA,CAAE;AAAA,gBAAA,GAC/D;AAAA,cAEJ;AAAA,YAAA;AAAA,YAEF;AAAA,cACE,OAAO,gBAAAgB,EAACtB,GAAA,EAAK,QAAO,YAAY,UAAAM,EAAE,oBAAoB,GAAE;AAAA,cACxD,QAAQ,CAAC0B,MAAgC;AACvC,sBAAME,IAAQC,EAAgBH,CAAI,GAC5BI,IAAgBC,EAAiBL,CAAI;AAC3C,uBAAO,gBAAAV,EAACtB,GAAA,EAAM,UAAAsC,EAAmBJ,IAAQE,CAAa,GAAE;AAAA,cAC1D;AAAA,YAAA;AAAA,YAEF;AAAA,cACE,OAAO,gBAAAd,EAACtB,GAAA,EAAK,QAAO,YAAY,UAAAM,EAAE,sBAAsB,GAAE;AAAA,cAC1D,QAAQ,CAAC0B,MAAgC;AACvC,sBAAMO,IAAWC,EAAiBR,CAAI;AACtC,uBAAO,gBAAAV,EAACtB,GAAA,EAAM,UAAAsC,EAAmBC,CAAQ,GAAE;AAAA,cAC7C;AAAA,YAAA;AAAA,YAEF;AAAA,cACE,OAAO,gBAAAjB,EAACtB,GAAA,EAAK,QAAO,YAAY,UAAAM,EAAE,iCAAiC,GAAE;AAAA,cACrE,QAAQ,CAAC0B,MAAgC;AACvC,sBAAMS,IAAWC,EAAsBV,CAAI;AAC3C,uBAAO,gBAAAV,EAACtB,GAAA,EAAM,UAAA2C,EAAuBF,CAAQ,GAAE;AAAA,cACjD;AAAA,YAAA;AAAA,YAEF;AAAA,cACE,OAAO,gBAAAnB,EAACtB,GAAA,EAAK,QAAO,YAAY,UAAAM,EAAE,6BAA6B,GAAE;AAAA,cACjE,QAAQ,CAAC0B,MAAgC;AACvC,sBAAMY,IAAiBC,EAAkBb,CAAI;AAC7C,uBAAO,gBAAAV,EAACtB,GAAA,EAAM,UAAA2C,EAAuBC,CAAc,GAAE;AAAA,cACvD;AAAA,YAAA;AAAA,YAEF;AAAA,cACE,OAAO,gBAAAtB,EAACtB,GAAA,EAAK,QAAO,YAAY,UAAAM,EAAE,uBAAuB,GAAE;AAAA,cAC3D,QAAQ,CAAC0B,MAA2C;AAClD,sBAAMd,IAAWD,EAAY,IAAIe,EAAK,gBAAgB,EAAE,GAClDc,IAAqB5B,IACvB6B;AAAA,kBACEf;AAAA,kBACAd;AAAA,kBACApC,GAAW;AAAA,kBACXK;AAAA,kBACAK;AAAA,gBAAA,IAEF;AACJ,uBAAO,gBAAA8B,EAACtB,GAAA,EAAM,UAAA2C,EAAuBG,CAAkB,GAAE;AAAA,cAC3D;AAAA,YAAA;AAAA,UACF;AAAA,UAEF,MAAM7D;AAAA,UACN,UAAU,CAAC+C,MACT,gBAAAV;AAAA,YAAC0B;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL;AAAA,kBACE,OAAO1C,EAAE,eAAe;AAAA,kBACxB,MAAM,gBAAAgB,EAAC2B,IAAA,EAAU,eAAW,GAAA,CAAC;AAAA,kBAC7B,SAAS,MAAM;AACb,0BAAM/B,IAAWD,EAAY,IAAIe,EAAK,gBAAgB,EAAE;AACxD,oBAAId,KACF9B,EAAO8B,CAAQ;AAAA,kBAEnB;AAAA,gBAAA;AAAA,gBAEF;AAAA,kBACE,OAAOZ,EAAE0B,EAAK,WAAW,oBAAoB,eAAe;AAAA,kBAC5D,MAAMA,EAAK,WAAW,gBAAAV,EAAC4B,IAAA,EAAW,eAAW,GAAA,CAAC,IAAK,gBAAA5B,EAAC6B,IAAA,EAAQ,eAAW,GAAA,CAAC;AAAA,kBACxE,SAAS,MAAM;AAEb,oBADiBlC,EAAY,IAAIe,EAAK,gBAAgB,EAAE,KAEtD3C,EAAgB2C,CAAI;AAAA,kBAExB;AAAA,gBAAA;AAAA,cACF;AAAA,cAEF,cAAc1B,EAAE,eAAe;AAAA,YAAA;AAAA,UAAA;AAAA,UAGnC,YAAAT;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,EAAA,CACF;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"PayrollConfigurationPresentation.js","sources":["../../../../src/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { useRef } from 'react'\nimport type { EmployeeCompensations } from '@gusto/embedded-api/models/components/payrollshow'\nimport type { Employee } from '@gusto/embedded-api/models/components/employee'\nimport type { PayrollPayPeriodType } from '@gusto/embedded-api/models/components/payrollpayperiodtype'\nimport type { PayScheduleObject } from '@gusto/embedded-api/models/components/payscheduleobject'\nimport { Trans, useTranslation } from 'react-i18next'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport {\n useFormatEmployeePayRate,\n getRegularHours,\n getOvertimeHours,\n getTotalPtoHours,\n getAdditionalEarnings,\n getReimbursements,\n formatHoursDisplay,\n calculateGrossPay,\n} from '../helpers'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { PayrollBlockerAlerts } from '../PayrollBlocker/components/PayrollBlockerAlerts'\nimport styles from './PayrollConfigurationPresentation.module.scss'\nimport { useI18n } from '@/i18n'\nimport { DataView, Flex, FlexItem, Grid, PayrollLoading } from '@/components/Common'\nimport type { PaginationControlProps } from '@/components/Common/PaginationControl/PaginationControlTypes'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { HamburgerMenu } from '@/components/Common/HamburgerMenu'\nimport PencilSvg from '@/assets/icons/pencil.svg?react'\nimport XCircle from '@/assets/icons/x-circle.svg?react'\nimport PlusCircle from '@/assets/icons/plus-circle.svg?react'\nimport { firstLastName, formatNumberAsCurrency } from '@/helpers/formattedStrings'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport useContainerBreakpoints from '@/hooks/useContainerBreakpoints/useContainerBreakpoints'\n\ninterface PayrollConfigurationPresentationProps {\n employeeCompensations: EmployeeCompensations[]\n employeeDetails: Employee[]\n payPeriod?: PayrollPayPeriodType\n paySchedule?: PayScheduleObject\n onCalculatePayroll: () => void\n onEdit: (employee: Employee) => void\n onToggleExclude: (employeeCompensation: PayrollEmployeeCompensationsType) => void\n onViewBlockers: () => void\n isOffCycle?: boolean\n alerts?: ReactNode\n payrollDeadlineNotice?: {\n label: string\n content?: ReactNode\n }\n isPending?: boolean\n payrollBlockers?: ApiPayrollBlocker[]\n pagination?: PaginationControlProps\n withReimbursements?: boolean\n}\n\nconst getPayrollConfigurationTitle = (\n payPeriod: PayrollPayPeriodType | undefined,\n dateFormatter: ReturnType<typeof useDateFormatter>,\n) => {\n if (payPeriod?.startDate && payPeriod.endDate) {\n return dateFormatter.formatPayPeriod(payPeriod.startDate, payPeriod.endDate)\n }\n return { startDate: '', endDate: '' }\n}\n\nexport const PayrollConfigurationPresentation = ({\n employeeCompensations,\n employeeDetails,\n payPeriod,\n paySchedule,\n onEdit,\n onToggleExclude,\n onCalculatePayroll,\n onViewBlockers,\n isOffCycle = false,\n alerts,\n payrollDeadlineNotice,\n isPending,\n payrollBlockers = [],\n pagination,\n withReimbursements = true,\n}: PayrollConfigurationPresentationProps) => {\n const { Button, Heading, Text, Badge, Alert } = useComponentContext()\n useI18n('Payroll.PayrollConfiguration')\n const { t } = useTranslation('Payroll.PayrollConfiguration')\n const dateFormatter = useDateFormatter()\n const formatEmployeePayRate = useFormatEmployeePayRate()\n const containerRef = useRef<HTMLDivElement>(null)\n const breakpoints = useContainerBreakpoints({ ref: containerRef })\n const isDesktop = breakpoints.includes('small')\n\n const employeeMap = new Map(employeeDetails.map(employee => [employee.uuid, employee]))\n\n const getEmployeeName = (employeeUuid: string) => {\n const employee = employeeMap.get(employeeUuid)\n return employee\n ? firstLastName({ first_name: employee.firstName, last_name: employee.lastName })\n : null\n }\n\n return (\n <div ref={containerRef} className={styles.container}>\n <Flex flexDirection=\"column\" gap={16}>\n <Flex\n flexDirection={isDesktop ? 'row' : 'column'}\n justifyContent={isDesktop ? 'space-between' : 'normal'}\n alignItems={isDesktop ? 'center' : 'stretch'}\n gap={isDesktop ? 0 : 16}\n >\n <FlexItem>\n <Heading as=\"h1\">{t('pageTitle')}</Heading>\n <Text>\n <Trans\n i18nKey=\"description\"\n t={t}\n components={{ dateWrapper: <Text weight=\"bold\" as=\"span\" /> }}\n values={getPayrollConfigurationTitle(payPeriod, dateFormatter)}\n />\n </Text>\n </FlexItem>\n <FlexItem flexGrow={isDesktop ? 0 : 0}>\n {isDesktop ? (\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isPending}\n >\n {t('calculatePayroll')}\n </Button>\n ) : (\n <Flex flexDirection=\"column\" justifyContent=\"normal\" alignItems=\"stretch\" gap={12}>\n <Button\n title={t('calculatePayrollTitle')}\n onClick={onCalculatePayroll}\n isDisabled={isPending}\n >\n {t('calculatePayroll')}\n </Button>\n </Flex>\n )}\n </FlexItem>\n </Flex>\n\n {(alerts || payrollDeadlineNotice) && (\n <Grid gap={16} gridTemplateColumns=\"1fr\">\n {payrollDeadlineNotice && (\n <Alert status=\"info\" label={payrollDeadlineNotice.label}>\n {payrollDeadlineNotice.content}\n </Alert>\n )}\n {alerts}\n </Grid>\n )}\n\n {isPending ? (\n <PayrollLoading title={t('loadingTitle')} description={t('loadingDescription')} />\n ) : (\n <>\n <div className={styles.payrollBlockerContainer}>\n {payrollBlockers.length > 0 && (\n <PayrollBlockerAlerts\n blockers={payrollBlockers}\n onMultipleViewClick={onViewBlockers}\n />\n )}\n </div>\n <FlexItem>\n <Heading as=\"h3\">{t('hoursAndEarningsTitle')}</Heading>\n <Text>{t('hoursAndEarningsDescription')}</Text>\n </FlexItem>\n\n <DataView\n label={t('employeeCompensationsTitle')}\n columns={[\n {\n title: <Text weight=\"semibold\">{t('tableColumns.employees')}</Text>,\n render: (item: EmployeeCompensations) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const payRateDisplay = formatEmployeePayRate(employee)\n return (\n <Flex flexDirection=\"column\" gap={8 as const}>\n <Text weight=\"semibold\">{getEmployeeName(item.employeeUuid || '')}</Text>\n {payRateDisplay && <Text variant=\"supporting\">{payRateDisplay}</Text>}\n {item.excluded && <Badge status=\"warning\">{t('skippedBadge')}</Badge>}\n </Flex>\n )\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.hours')}</Text>,\n render: (item: EmployeeCompensations) => {\n const hours = getRegularHours(item)\n const overtimeHours = getOvertimeHours(item)\n return <Text>{formatHoursDisplay(hours + overtimeHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.timeOff')}</Text>,\n render: (item: EmployeeCompensations) => {\n const ptoHours = getTotalPtoHours(item)\n return <Text>{formatHoursDisplay(ptoHours)}</Text>\n },\n },\n {\n title: <Text weight=\"semibold\">{t('tableColumns.additionalEarnings')}</Text>,\n render: (item: EmployeeCompensations) => {\n const earnings = getAdditionalEarnings(item)\n return <Text>{formatNumberAsCurrency(earnings)}</Text>\n },\n },\n ...(withReimbursements\n ? [\n {\n title: <Text weight=\"semibold\">{t('tableColumns.reimbursements')}</Text>,\n render: (item: EmployeeCompensations) => {\n const reimbursements = getReimbursements(item)\n return <Text>{formatNumberAsCurrency(reimbursements)}</Text>\n },\n },\n ]\n : []),\n {\n title: <Text weight=\"semibold\">{t('tableColumns.totalPay')}</Text>,\n render: (item: PayrollEmployeeCompensationsType) => {\n const employee = employeeMap.get(item.employeeUuid || '')\n const calculatedGrossPay = employee\n ? calculateGrossPay(\n item,\n employee,\n payPeriod?.startDate,\n paySchedule,\n isOffCycle,\n )\n : 0\n return <Text>{formatNumberAsCurrency(calculatedGrossPay)}</Text>\n },\n },\n ]}\n data={employeeCompensations}\n itemMenu={(item: EmployeeCompensations) => (\n <HamburgerMenu\n items={[\n {\n label: t('editMenu.edit'),\n icon: <PencilSvg aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onEdit(employee)\n }\n },\n },\n {\n label: t(item.excluded ? 'editMenu.unskip' : 'editMenu.skip'),\n icon: item.excluded ? <PlusCircle aria-hidden /> : <XCircle aria-hidden />,\n onClick: () => {\n const employee = employeeMap.get(item.employeeUuid || '')\n if (employee) {\n onToggleExclude(item)\n }\n },\n },\n ]}\n triggerLabel={t('editMenu.edit')}\n />\n )}\n pagination={pagination}\n />\n </>\n )}\n </Flex>\n </div>\n )\n}\n"],"names":["getPayrollConfigurationTitle","payPeriod","dateFormatter","PayrollConfigurationPresentation","employeeCompensations","employeeDetails","paySchedule","onEdit","onToggleExclude","onCalculatePayroll","onViewBlockers","isOffCycle","alerts","payrollDeadlineNotice","isPending","payrollBlockers","pagination","withReimbursements","Button","Heading","Text","Badge","Alert","useComponentContext","useI18n","t","useTranslation","useDateFormatter","formatEmployeePayRate","useFormatEmployeePayRate","containerRef","useRef","isDesktop","useContainerBreakpoints","employeeMap","employee","getEmployeeName","employeeUuid","firstLastName","jsx","styles","jsxs","Flex","FlexItem","Trans","Grid","PayrollLoading","Fragment","PayrollBlockerAlerts","DataView","item","payRateDisplay","hours","getRegularHours","overtimeHours","getOvertimeHours","formatHoursDisplay","ptoHours","getTotalPtoHours","earnings","getAdditionalEarnings","formatNumberAsCurrency","reimbursements","getReimbursements","calculatedGrossPay","calculateGrossPay","HamburgerMenu","PencilSvg","PlusCircle","XCircle"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsDA,MAAMA,KAA+B,CACnCC,GACAC,MAEID,GAAW,aAAaA,EAAU,UAC7BC,EAAc,gBAAgBD,EAAU,WAAWA,EAAU,OAAO,IAEtE,EAAE,WAAW,IAAI,SAAS,GAAA,GAGtBE,KAAmC,CAAC;AAAA,EAC/C,uBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAJ;AAAA,EACA,aAAAK;AAAA,EACA,QAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,QAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC,IAAkB,CAAA;AAAA,EAClB,YAAAC;AAAA,EACA,oBAAAC,IAAqB;AACvB,MAA6C;AAC3C,QAAM,EAAE,QAAAC,GAAQ,SAAAC,GAAS,MAAAC,GAAM,OAAAC,GAAO,OAAAC,EAAA,IAAUC,EAAA;AAChD,EAAAC,EAAQ,8BAA8B;AACtC,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,8BAA8B,GACrDxB,IAAgByB,GAAA,GAChBC,IAAwBC,EAAA,GACxBC,IAAeC,EAAuB,IAAI,GAE1CC,IADcC,GAAwB,EAAE,KAAKH,GAAc,EACnC,SAAS,OAAO,GAExCI,IAAc,IAAI,IAAI7B,EAAgB,IAAI,CAAA8B,MAAY,CAACA,EAAS,MAAMA,CAAQ,CAAC,CAAC,GAEhFC,IAAkB,CAACC,MAAyB;AAChD,UAAMF,IAAWD,EAAY,IAAIG,CAAY;AAC7C,WAAOF,IACHG,GAAc,EAAE,YAAYH,EAAS,WAAW,WAAWA,EAAS,SAAA,CAAU,IAC9E;AAAA,EACN;AAEA,SACE,gBAAAI,EAAC,OAAA,EAAI,KAAKT,GAAc,WAAWU,EAAO,WACxC,UAAA,gBAAAC,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,IAAA,gBAAAD;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,eAAeV,IAAY,QAAQ;AAAA,QACnC,gBAAgBA,IAAY,kBAAkB;AAAA,QAC9C,YAAYA,IAAY,WAAW;AAAA,QACnC,KAAKA,IAAY,IAAI;AAAA,QAErB,UAAA;AAAA,UAAA,gBAAAS,EAACE,GAAA,EACC,UAAA;AAAA,YAAA,gBAAAJ,EAACpB,GAAA,EAAQ,IAAG,MAAM,UAAAM,EAAE,WAAW,GAAE;AAAA,8BAChCL,GAAA,EACC,UAAA,gBAAAmB;AAAA,cAACK;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,GAAAnB;AAAA,gBACA,YAAY,EAAE,aAAa,gBAAAc,EAACnB,KAAK,QAAO,QAAO,IAAG,OAAA,CAAO,EAAA;AAAA,gBACzD,QAAQpB,GAA6BC,GAAWC,CAAa;AAAA,cAAA;AAAA,YAAA,EAC/D,CACF;AAAA,UAAA,GACF;AAAA,4BACCyC,GAAA,EAAS,UAAsB,GAC7B,UAAAX,IACC,gBAAAO;AAAA,YAACrB;AAAA,YAAA;AAAA,cACC,OAAOO,EAAE,uBAAuB;AAAA,cAChC,SAAShB;AAAA,cACT,YAAYK;AAAA,cAEX,YAAE,kBAAkB;AAAA,YAAA;AAAA,UAAA,IAGvB,gBAAAyB,EAACG,GAAA,EAAK,eAAc,UAAS,gBAAe,UAAS,YAAW,WAAU,KAAK,IAC7E,UAAA,gBAAAH;AAAA,YAACrB;AAAA,YAAA;AAAA,cACC,OAAOO,EAAE,uBAAuB;AAAA,cAChC,SAAShB;AAAA,cACT,YAAYK;AAAA,cAEX,YAAE,kBAAkB;AAAA,YAAA;AAAA,UAAA,GAEzB,EAAA,CAEJ;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,KAGAF,KAAUC,MACV,gBAAA4B,EAACI,KAAK,KAAK,IAAI,qBAAoB,OAChC,UAAA;AAAA,MAAAhC,KACC,gBAAA0B,EAACjB,KAAM,QAAO,QAAO,OAAOT,EAAsB,OAC/C,YAAsB,QAAA,CACzB;AAAA,MAEDD;AAAA,IAAA,GACH;AAAA,IAGDE,IACC,gBAAAyB,EAACO,IAAA,EAAe,OAAOrB,EAAE,cAAc,GAAG,aAAaA,EAAE,oBAAoB,EAAA,CAAG,IAEhF,gBAAAgB,EAAAM,GAAA,EACE,UAAA;AAAA,MAAA,gBAAAR,EAAC,SAAI,WAAWC,EAAO,yBACpB,UAAAzB,EAAgB,SAAS,KACxB,gBAAAwB;AAAA,QAACS;AAAA,QAAA;AAAA,UACC,UAAUjC;AAAA,UACV,qBAAqBL;AAAA,QAAA;AAAA,MAAA,GAG3B;AAAA,wBACCiC,GAAA,EACC,UAAA;AAAA,QAAA,gBAAAJ,EAACpB,GAAA,EAAQ,IAAG,MAAM,UAAAM,EAAE,uBAAuB,GAAE;AAAA,QAC7C,gBAAAc,EAACnB,GAAA,EAAM,UAAAK,EAAE,6BAA6B,EAAA,CAAE;AAAA,MAAA,GAC1C;AAAA,MAEA,gBAAAc;AAAA,QAACU;AAAA,QAAA;AAAA,UACC,OAAOxB,EAAE,4BAA4B;AAAA,UACrC,SAAS;AAAA,YACP;AAAA,cACE,OAAO,gBAAAc,EAACnB,GAAA,EAAK,QAAO,YAAY,UAAAK,EAAE,wBAAwB,GAAE;AAAA,cAC5D,QAAQ,CAACyB,MAAgC;AACvC,sBAAMf,IAAWD,EAAY,IAAIgB,EAAK,gBAAgB,EAAE,GAClDC,IAAiBvB,EAAsBO,CAAQ;AACrD,uBACE,gBAAAM,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,GAChC,UAAA;AAAA,kBAAA,gBAAAH,EAACnB,KAAK,QAAO,YAAY,YAAgB8B,EAAK,gBAAgB,EAAE,GAAE;AAAA,kBACjEC,KAAkB,gBAAAZ,EAACnB,GAAA,EAAK,SAAQ,cAAc,UAAA+B,GAAe;AAAA,kBAC7DD,EAAK,YAAY,gBAAAX,EAAClB,GAAA,EAAM,QAAO,WAAW,UAAAI,EAAE,cAAc,EAAA,CAAE;AAAA,gBAAA,GAC/D;AAAA,cAEJ;AAAA,YAAA;AAAA,YAEF;AAAA,cACE,OAAO,gBAAAc,EAACnB,GAAA,EAAK,QAAO,YAAY,UAAAK,EAAE,oBAAoB,GAAE;AAAA,cACxD,QAAQ,CAACyB,MAAgC;AACvC,sBAAME,IAAQC,EAAgBH,CAAI,GAC5BI,IAAgBC,EAAiBL,CAAI;AAC3C,uBAAO,gBAAAX,EAACnB,GAAA,EAAM,UAAAoC,EAAmBJ,IAAQE,CAAa,GAAE;AAAA,cAC1D;AAAA,YAAA;AAAA,YAEF;AAAA,cACE,OAAO,gBAAAf,EAACnB,GAAA,EAAK,QAAO,YAAY,UAAAK,EAAE,sBAAsB,GAAE;AAAA,cAC1D,QAAQ,CAACyB,MAAgC;AACvC,sBAAMO,IAAWC,EAAiBR,CAAI;AACtC,uBAAO,gBAAAX,EAACnB,GAAA,EAAM,UAAAoC,EAAmBC,CAAQ,GAAE;AAAA,cAC7C;AAAA,YAAA;AAAA,YAEF;AAAA,cACE,OAAO,gBAAAlB,EAACnB,GAAA,EAAK,QAAO,YAAY,UAAAK,EAAE,iCAAiC,GAAE;AAAA,cACrE,QAAQ,CAACyB,MAAgC;AACvC,sBAAMS,IAAWC,EAAsBV,CAAI;AAC3C,uBAAO,gBAAAX,EAACnB,GAAA,EAAM,UAAAyC,EAAuBF,CAAQ,GAAE;AAAA,cACjD;AAAA,YAAA;AAAA,YAEF,GAAI1C,IACA;AAAA,cACE;AAAA,gBACE,OAAO,gBAAAsB,EAACnB,GAAA,EAAK,QAAO,YAAY,UAAAK,EAAE,6BAA6B,GAAE;AAAA,gBACjE,QAAQ,CAACyB,MAAgC;AACvC,wBAAMY,IAAiBC,EAAkBb,CAAI;AAC7C,yBAAO,gBAAAX,EAACnB,GAAA,EAAM,UAAAyC,EAAuBC,CAAc,GAAE;AAAA,gBACvD;AAAA,cAAA;AAAA,YACF,IAEF,CAAA;AAAA,YACJ;AAAA,cACE,OAAO,gBAAAvB,EAACnB,GAAA,EAAK,QAAO,YAAY,UAAAK,EAAE,uBAAuB,GAAE;AAAA,cAC3D,QAAQ,CAACyB,MAA2C;AAClD,sBAAMf,IAAWD,EAAY,IAAIgB,EAAK,gBAAgB,EAAE,GAClDc,IAAqB7B,IACvB8B;AAAA,kBACEf;AAAA,kBACAf;AAAA,kBACAlC,GAAW;AAAA,kBACXK;AAAA,kBACAK;AAAA,gBAAA,IAEF;AACJ,uBAAO,gBAAA4B,EAACnB,GAAA,EAAM,UAAAyC,EAAuBG,CAAkB,GAAE;AAAA,cAC3D;AAAA,YAAA;AAAA,UACF;AAAA,UAEF,MAAM5D;AAAA,UACN,UAAU,CAAC8C,MACT,gBAAAX;AAAA,YAAC2B;AAAA,YAAA;AAAA,cACC,OAAO;AAAA,gBACL;AAAA,kBACE,OAAOzC,EAAE,eAAe;AAAA,kBACxB,MAAM,gBAAAc,EAAC4B,GAAA,EAAU,eAAW,GAAA,CAAC;AAAA,kBAC7B,SAAS,MAAM;AACb,0BAAMhC,IAAWD,EAAY,IAAIgB,EAAK,gBAAgB,EAAE;AACxD,oBAAIf,KACF5B,EAAO4B,CAAQ;AAAA,kBAEnB;AAAA,gBAAA;AAAA,gBAEF;AAAA,kBACE,OAAOV,EAAEyB,EAAK,WAAW,oBAAoB,eAAe;AAAA,kBAC5D,MAAMA,EAAK,WAAW,gBAAAX,EAAC6B,IAAA,EAAW,eAAW,GAAA,CAAC,IAAK,gBAAA7B,EAAC8B,IAAA,EAAQ,eAAW,GAAA,CAAC;AAAA,kBACxE,SAAS,MAAM;AAEb,oBADiBnC,EAAY,IAAIgB,EAAK,gBAAgB,EAAE,KAEtD1C,EAAgB0C,CAAI;AAAA,kBAExB;AAAA,gBAAA;AAAA,cACF;AAAA,cAEF,cAAczB,EAAE,eAAe;AAAA,YAAA;AAAA,UAAA;AAAA,UAGnC,YAAAT;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,EAAA,CACF;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;"}
|
|
@@ -3,7 +3,8 @@ interface PayrollEditEmployeeProps extends BaseComponentInterface<'Payroll.Payro
|
|
|
3
3
|
employeeId: string;
|
|
4
4
|
companyId: string;
|
|
5
5
|
payrollId: string;
|
|
6
|
+
withReimbursements?: boolean;
|
|
6
7
|
}
|
|
7
8
|
export declare function PayrollEditEmployee(props: PayrollEditEmployeeProps & BaseComponentInterface): import("react/jsx-runtime").JSX.Element;
|
|
8
|
-
export declare const Root: ({ employeeId, companyId, payrollId, onEvent, dictionary, }: PayrollEditEmployeeProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare const Root: ({ employeeId, companyId, payrollId, onEvent, dictionary, withReimbursements, }: PayrollEditEmployeeProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
10
|
export {};
|
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
import { jsx as n } from "react/jsx-runtime";
|
|
2
|
-
import { useEmployeesGetSuspense as
|
|
3
|
-
import { usePayrollsUpdateMutation as
|
|
4
|
-
import { useMemo as
|
|
5
|
-
import { usePreparedPayrollData as
|
|
6
|
-
import { PayrollEditEmployeePresentation as
|
|
2
|
+
import { useEmployeesGetSuspense as R } from "@gusto/embedded-api/react-query/employeesGet";
|
|
3
|
+
import { usePayrollsUpdateMutation as U } from "@gusto/embedded-api/react-query/payrollsUpdate";
|
|
4
|
+
import { useMemo as x } from "react";
|
|
5
|
+
import { usePreparedPayrollData as Y } from "../usePreparedPayrollData.js";
|
|
6
|
+
import { PayrollEditEmployeePresentation as b } from "./PayrollEditEmployeePresentation.js";
|
|
7
7
|
import { componentEvents as p } from "../../../shared/constants.js";
|
|
8
|
-
import { BaseComponent as
|
|
9
|
-
import { useComponentDictionary as
|
|
10
|
-
import { useBase as
|
|
11
|
-
function
|
|
12
|
-
return /* @__PURE__ */ n(
|
|
8
|
+
import { BaseComponent as g } from "../../Base/Base.js";
|
|
9
|
+
import { useComponentDictionary as N } from "../../../i18n/I18n.js";
|
|
10
|
+
import { useBase as h } from "../../Base/useBase.js";
|
|
11
|
+
function k(e) {
|
|
12
|
+
return /* @__PURE__ */ n(g, { ...e, children: /* @__PURE__ */ n(v, { ...e, children: e.children }) });
|
|
13
13
|
}
|
|
14
|
-
const
|
|
14
|
+
const v = ({
|
|
15
15
|
employeeId: e,
|
|
16
16
|
companyId: a,
|
|
17
17
|
payrollId: s,
|
|
18
18
|
onEvent: m,
|
|
19
|
-
dictionary: y
|
|
19
|
+
dictionary: y,
|
|
20
|
+
withReimbursements: c = !0
|
|
20
21
|
}) => {
|
|
21
|
-
|
|
22
|
-
const { LoadingIndicator:
|
|
22
|
+
N("Payroll.PayrollEditEmployee", y);
|
|
23
|
+
const { LoadingIndicator: d, baseSubmitHandler: u } = h(), { data: f } = R({ employeeId: e }), P = x(() => [e], []), { preparedPayroll: t, paySchedule: E, isLoading: C } = Y({
|
|
23
24
|
companyId: a,
|
|
24
25
|
payrollId: s,
|
|
25
|
-
employeeUuids:
|
|
26
|
-
}), { mutateAsync:
|
|
26
|
+
employeeUuids: P
|
|
27
|
+
}), { mutateAsync: L, isPending: D } = U(), i = f.employee, S = t?.employeeCompensations?.at(0), _ = ({
|
|
27
28
|
paymentMethod: o,
|
|
28
29
|
reimbursements: l,
|
|
29
30
|
...r
|
|
@@ -31,10 +32,10 @@ const h = ({
|
|
|
31
32
|
...r,
|
|
32
33
|
...o && o !== "Historical" ? { paymentMethod: o } : {},
|
|
33
34
|
memo: r.memo || void 0
|
|
34
|
-
}),
|
|
35
|
-
const l =
|
|
36
|
-
await
|
|
37
|
-
const r = await
|
|
35
|
+
}), A = async (o) => {
|
|
36
|
+
const l = _(o);
|
|
37
|
+
await u(null, async () => {
|
|
38
|
+
const r = await L({
|
|
38
39
|
request: {
|
|
39
40
|
companyId: a,
|
|
40
41
|
payrollId: s,
|
|
@@ -48,26 +49,27 @@ const h = ({
|
|
|
48
49
|
employee: i
|
|
49
50
|
});
|
|
50
51
|
});
|
|
51
|
-
},
|
|
52
|
+
}, O = () => {
|
|
52
53
|
m(p.RUN_PAYROLL_EMPLOYEE_CANCELLED);
|
|
53
54
|
};
|
|
54
|
-
return
|
|
55
|
-
|
|
55
|
+
return C ? /* @__PURE__ */ n(d, {}) : /* @__PURE__ */ n(
|
|
56
|
+
b,
|
|
56
57
|
{
|
|
57
|
-
onSave:
|
|
58
|
-
onCancel:
|
|
58
|
+
onSave: A,
|
|
59
|
+
onCancel: O,
|
|
59
60
|
employee: i,
|
|
60
|
-
isPending:
|
|
61
|
-
employeeCompensation:
|
|
61
|
+
isPending: D,
|
|
62
|
+
employeeCompensation: S,
|
|
62
63
|
fixedCompensationTypes: t?.fixedCompensationTypes || [],
|
|
63
64
|
payPeriodStartDate: t?.payPeriod?.startDate,
|
|
64
|
-
paySchedule:
|
|
65
|
-
isOffCycle: t?.offCycle
|
|
65
|
+
paySchedule: E,
|
|
66
|
+
isOffCycle: t?.offCycle,
|
|
67
|
+
withReimbursements: c
|
|
66
68
|
}
|
|
67
69
|
);
|
|
68
70
|
};
|
|
69
71
|
export {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
k as PayrollEditEmployee,
|
|
73
|
+
v as Root
|
|
72
74
|
};
|
|
73
75
|
//# sourceMappingURL=PayrollEditEmployee.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayrollEditEmployee.js","sources":["../../../../src/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.tsx"],"sourcesContent":["import { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { useMemo } from 'react'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { PayrollEditEmployeePresentation } from './PayrollEditEmployeePresentation'\nimport { componentEvents } from '@/shared/constants'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useComponentDictionary } from '@/i18n'\nimport { useBase } from '@/components/Base/useBase'\n\ninterface PayrollEditEmployeeProps extends BaseComponentInterface<'Payroll.PayrollEditEmployee'> {\n employeeId: string\n companyId: string\n payrollId: string\n}\n\nexport function PayrollEditEmployee(props: PayrollEditEmployeeProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n employeeId,\n companyId,\n payrollId,\n onEvent,\n dictionary,\n}: PayrollEditEmployeeProps) => {\n useComponentDictionary('Payroll.PayrollEditEmployee', dictionary)\n\n const { LoadingIndicator, baseSubmitHandler } = useBase()\n\n const { data: employeeData } = useEmployeesGetSuspense({ employeeId })\n const memoizedEmployeeId = useMemo(() => [employeeId], [])\n const { preparedPayroll, paySchedule, isLoading } = usePreparedPayrollData({\n companyId,\n payrollId,\n employeeUuids: memoizedEmployeeId,\n })\n\n const { mutateAsync: updatePayroll, isPending } = usePayrollsUpdateMutation()\n\n const employee = employeeData.employee!\n const employeeCompensation = preparedPayroll?.employeeCompensations?.at(0)\n\n const transformEmployeeCompensation = ({\n paymentMethod,\n reimbursements,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n }\n }\n\n const onSave = async (updatedCompensation: PayrollEmployeeCompensationsType) => {\n const transformedCompensation = transformEmployeeCompensation(updatedCompensation)\n await baseSubmitHandler(null, async () => {\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [transformedCompensation],\n },\n },\n })\n\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n employee,\n })\n })\n }\n\n const onCancel = () => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED)\n }\n\n if (isLoading) {\n return <LoadingIndicator />\n }\n\n return (\n <PayrollEditEmployeePresentation\n onSave={onSave}\n onCancel={onCancel}\n employee={employee}\n isPending={isPending}\n employeeCompensation={employeeCompensation}\n fixedCompensationTypes={preparedPayroll?.fixedCompensationTypes || []}\n payPeriodStartDate={preparedPayroll?.payPeriod?.startDate}\n paySchedule={paySchedule}\n isOffCycle={preparedPayroll?.offCycle}\n />\n )\n}\n"],"names":["PayrollEditEmployee","props","jsx","BaseComponent","Root","employeeId","companyId","payrollId","onEvent","dictionary","useComponentDictionary","LoadingIndicator","baseSubmitHandler","useBase","employeeData","useEmployeesGetSuspense","memoizedEmployeeId","useMemo","preparedPayroll","paySchedule","isLoading","usePreparedPayrollData","updatePayroll","isPending","usePayrollsUpdateMutation","employee","employeeCompensation","transformEmployeeCompensation","paymentMethod","reimbursements","compensation","onSave","updatedCompensation","transformedCompensation","result","componentEvents","onCancel","PayrollEditEmployeePresentation"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"PayrollEditEmployee.js","sources":["../../../../src/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.tsx"],"sourcesContent":["import { useEmployeesGetSuspense } from '@gusto/embedded-api/react-query/employeesGet'\nimport { usePayrollsUpdateMutation } from '@gusto/embedded-api/react-query/payrollsUpdate'\nimport type { PayrollEmployeeCompensationsType } from '@gusto/embedded-api/models/components/payrollemployeecompensationstype'\nimport type { PayrollUpdateEmployeeCompensations } from '@gusto/embedded-api/models/components/payrollupdate'\nimport { useMemo } from 'react'\nimport { usePreparedPayrollData } from '../usePreparedPayrollData'\nimport { PayrollEditEmployeePresentation } from './PayrollEditEmployeePresentation'\nimport { componentEvents } from '@/shared/constants'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useComponentDictionary } from '@/i18n'\nimport { useBase } from '@/components/Base/useBase'\n\ninterface PayrollEditEmployeeProps extends BaseComponentInterface<'Payroll.PayrollEditEmployee'> {\n employeeId: string\n companyId: string\n payrollId: string\n withReimbursements?: boolean\n}\n\nexport function PayrollEditEmployee(props: PayrollEditEmployeeProps & BaseComponentInterface) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({\n employeeId,\n companyId,\n payrollId,\n onEvent,\n dictionary,\n withReimbursements = true,\n}: PayrollEditEmployeeProps) => {\n useComponentDictionary('Payroll.PayrollEditEmployee', dictionary)\n\n const { LoadingIndicator, baseSubmitHandler } = useBase()\n\n const { data: employeeData } = useEmployeesGetSuspense({ employeeId })\n const memoizedEmployeeId = useMemo(() => [employeeId], [])\n const { preparedPayroll, paySchedule, isLoading } = usePreparedPayrollData({\n companyId,\n payrollId,\n employeeUuids: memoizedEmployeeId,\n })\n\n const { mutateAsync: updatePayroll, isPending } = usePayrollsUpdateMutation()\n\n const employee = employeeData.employee!\n const employeeCompensation = preparedPayroll?.employeeCompensations?.at(0)\n\n const transformEmployeeCompensation = ({\n paymentMethod,\n reimbursements,\n ...compensation\n }: PayrollEmployeeCompensationsType): PayrollUpdateEmployeeCompensations => {\n return {\n ...compensation,\n ...(paymentMethod && paymentMethod !== 'Historical' ? { paymentMethod } : {}),\n memo: compensation.memo || undefined,\n }\n }\n\n const onSave = async (updatedCompensation: PayrollEmployeeCompensationsType) => {\n const transformedCompensation = transformEmployeeCompensation(updatedCompensation)\n await baseSubmitHandler(null, async () => {\n const result = await updatePayroll({\n request: {\n companyId,\n payrollId,\n payrollUpdate: {\n employeeCompensations: [transformedCompensation],\n },\n },\n })\n\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_SAVED, {\n payrollPrepared: result.payrollPrepared,\n employee,\n })\n })\n }\n\n const onCancel = () => {\n onEvent(componentEvents.RUN_PAYROLL_EMPLOYEE_CANCELLED)\n }\n\n if (isLoading) {\n return <LoadingIndicator />\n }\n\n return (\n <PayrollEditEmployeePresentation\n onSave={onSave}\n onCancel={onCancel}\n employee={employee}\n isPending={isPending}\n employeeCompensation={employeeCompensation}\n fixedCompensationTypes={preparedPayroll?.fixedCompensationTypes || []}\n payPeriodStartDate={preparedPayroll?.payPeriod?.startDate}\n paySchedule={paySchedule}\n isOffCycle={preparedPayroll?.offCycle}\n withReimbursements={withReimbursements}\n />\n )\n}\n"],"names":["PayrollEditEmployee","props","jsx","BaseComponent","Root","employeeId","companyId","payrollId","onEvent","dictionary","withReimbursements","useComponentDictionary","LoadingIndicator","baseSubmitHandler","useBase","employeeData","useEmployeesGetSuspense","memoizedEmployeeId","useMemo","preparedPayroll","paySchedule","isLoading","usePreparedPayrollData","updatePayroll","isPending","usePayrollsUpdateMutation","employee","employeeCompensation","transformEmployeeCompensation","paymentMethod","reimbursements","compensation","onSave","updatedCompensation","transformedCompensation","result","componentEvents","onCancel","PayrollEditEmployeePresentation"],"mappings":";;;;;;;;;;AAoBO,SAASA,EAAoBC,GAA0D;AAC5F,SACE,gBAAAC,EAACC,GAAA,EAAe,GAAGF,GACjB,UAAA,gBAAAC,EAACE,KAAM,GAAGH,GAAQ,UAAAA,EAAM,SAAA,CAAS,EAAA,CACnC;AAEJ;AAEO,MAAMG,IAAO,CAAC;AAAA,EACnB,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,oBAAAC,IAAqB;AACvB,MAAgC;AAC9B,EAAAC,EAAuB,+BAA+BF,CAAU;AAEhE,QAAM,EAAE,kBAAAG,GAAkB,mBAAAC,EAAA,IAAsBC,EAAA,GAE1C,EAAE,MAAMC,EAAA,IAAiBC,EAAwB,EAAE,YAAAX,GAAY,GAC/DY,IAAqBC,EAAQ,MAAM,CAACb,CAAU,GAAG,CAAA,CAAE,GACnD,EAAE,iBAAAc,GAAiB,aAAAC,GAAa,WAAAC,EAAA,IAAcC,EAAuB;AAAA,IACzE,WAAAhB;AAAA,IACA,WAAAC;AAAA,IACA,eAAeU;AAAA,EAAA,CAChB,GAEK,EAAE,aAAaM,GAAe,WAAAC,EAAA,IAAcC,EAAA,GAE5CC,IAAWX,EAAa,UACxBY,IAAuBR,GAAiB,uBAAuB,GAAG,CAAC,GAEnES,IAAgC,CAAC;AAAA,IACrC,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,OAEI;AAAA,IACL,GAAGA;AAAA,IACH,GAAIF,KAAiBA,MAAkB,eAAe,EAAE,eAAAA,EAAA,IAAkB,CAAA;AAAA,IAC1E,MAAME,EAAa,QAAQ;AAAA,EAAA,IAIzBC,IAAS,OAAOC,MAA0D;AAC9E,UAAMC,IAA0BN,EAA8BK,CAAmB;AACjF,UAAMpB,EAAkB,MAAM,YAAY;AACxC,YAAMsB,IAAS,MAAMZ,EAAc;AAAA,QACjC,SAAS;AAAA,UACP,WAAAjB;AAAA,UACA,WAAAC;AAAA,UACA,eAAe;AAAA,YACb,uBAAuB,CAAC2B,CAAuB;AAAA,UAAA;AAAA,QACjD;AAAA,MACF,CACD;AAED,MAAA1B,EAAQ4B,EAAgB,4BAA4B;AAAA,QAClD,iBAAiBD,EAAO;AAAA,QACxB,UAAAT;AAAA,MAAA,CACD;AAAA,IACH,CAAC;AAAA,EACH,GAEMW,IAAW,MAAM;AACrB,IAAA7B,EAAQ4B,EAAgB,8BAA8B;AAAA,EACxD;AAEA,SAAIf,sBACMT,GAAA,EAAiB,IAIzB,gBAAAV;AAAA,IAACoC;AAAA,IAAA;AAAA,MACC,QAAAN;AAAA,MACA,UAAAK;AAAA,MACA,UAAAX;AAAA,MACA,WAAAF;AAAA,MACA,sBAAAG;AAAA,MACA,wBAAwBR,GAAiB,0BAA0B,CAAA;AAAA,MACnE,oBAAoBA,GAAiB,WAAW;AAAA,MAChD,aAAAC;AAAA,MACA,YAAYD,GAAiB;AAAA,MAC7B,oBAAAT;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -13,6 +13,7 @@ interface PayrollEditEmployeeProps {
|
|
|
13
13
|
payPeriodStartDate?: string;
|
|
14
14
|
paySchedule?: PayScheduleObject;
|
|
15
15
|
isOffCycle?: boolean;
|
|
16
|
+
withReimbursements?: boolean;
|
|
16
17
|
}
|
|
17
18
|
export declare const PayrollEditEmployeeFormSchema: z.ZodObject<{
|
|
18
19
|
hourlyCompensations: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodOptional<z.ZodString>>>;
|
|
@@ -35,5 +36,5 @@ export declare const PayrollEditEmployeeFormSchema: z.ZodObject<{
|
|
|
35
36
|
paymentMethod?: "Check" | "Direct Deposit" | "Historical" | undefined;
|
|
36
37
|
}>;
|
|
37
38
|
export type PayrollEditEmployeeFormValues = z.infer<typeof PayrollEditEmployeeFormSchema>;
|
|
38
|
-
export declare const PayrollEditEmployeePresentation: ({ onSave, onCancel, employee, employeeCompensation, isPending, fixedCompensationTypes, payPeriodStartDate, paySchedule, isOffCycle, }: PayrollEditEmployeeProps) => import("react/jsx-runtime").JSX.Element;
|
|
39
|
+
export declare const PayrollEditEmployeePresentation: ({ onSave, onCancel, employee, employeeCompensation, isPending, fixedCompensationTypes, payPeriodStartDate, paySchedule, isOffCycle, withReimbursements, }: PayrollEditEmployeeProps) => import("react/jsx-runtime").JSX.Element;
|
|
39
40
|
export {};
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { jsxs as a, jsx as r } from "react/jsx-runtime";
|
|
2
|
-
import { useForm as
|
|
3
|
-
import { useRef as
|
|
4
|
-
import { PayrollEmployeeCompensationsTypePaymentMethod as
|
|
5
|
-
import { useTranslation as
|
|
2
|
+
import { useForm as Y, useWatch as K, FormProvider as X } from "react-hook-form";
|
|
3
|
+
import { useRef as Q, useMemo as Z } from "react";
|
|
4
|
+
import { PayrollEmployeeCompensationsTypePaymentMethod as S } from "@gusto/embedded-api/models/components/payrollemployeecompensationstype";
|
|
5
|
+
import { useTranslation as J } from "react-i18next";
|
|
6
6
|
import { z as m } from "zod";
|
|
7
|
-
import { zodResolver as
|
|
7
|
+
import { zodResolver as ee } from "@hookform/resolvers/zod";
|
|
8
8
|
import u from "./PayrollEditEmployeePresentation.module.scss.js";
|
|
9
|
-
import { TimeOffField as
|
|
9
|
+
import { TimeOffField as te } from "./TimeOffField.js";
|
|
10
10
|
import { Flex as y } from "../../Common/Flex/Flex.js";
|
|
11
|
-
import { Grid as
|
|
11
|
+
import { Grid as P } from "../../Common/Grid/Grid.js";
|
|
12
12
|
import "classnames";
|
|
13
|
-
import { RadioGroupField as te } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
|
|
14
|
-
import { TextInputField as R } from "../../Common/Fields/TextInputField/TextInputField.js";
|
|
15
13
|
import { useComponentContext as ne } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
16
14
|
import { useI18n as re } from "../../../i18n/I18n.js";
|
|
17
15
|
import { Form as ie } from "../../Common/Form/Form.js";
|
|
18
16
|
import { firstLastName as se, formatNumberAsCurrency as oe } from "../../../helpers/formattedStrings.js";
|
|
19
|
-
import { getAdditionalEarningsCompensations as ae, getReimbursementCompensation as me, calculateGrossPay as
|
|
20
|
-
import { HOURS_COMPENSATION_NAMES as
|
|
17
|
+
import { getAdditionalEarningsCompensations as ae, getReimbursementCompensation as me, calculateGrossPay as k } from "../helpers.js";
|
|
18
|
+
import { HOURS_COMPENSATION_NAMES as w, EXCLUDED_ADDITIONAL_EARNINGS as le, COMPENSATION_NAME_DOUBLE_OVERTIME as de, COMPENSATION_NAME_OVERTIME as ue, COMPENSATION_NAME_REGULAR_HOURS as ce, COMPENSATION_NAME_REIMBURSEMENT as pe, COMPENSATION_NAME_CASH_TIPS as fe, COMPENSATION_NAME_COMMISSION as he, COMPENSATION_NAME_CORRECTION_PAYMENT as Ce, COMPENSATION_NAME_PAYCHECK_TIPS as Ne, COMPENSATION_NAME_BONUS as Ee } from "../../../shared/constants.js";
|
|
21
19
|
import { useContainerBreakpoints as ge } from "../../../hooks/useContainerBreakpoints/useContainerBreakpoints.js";
|
|
22
|
-
|
|
20
|
+
import { TextInputField as R } from "../../Common/Fields/TextInputField/TextInputField.js";
|
|
21
|
+
import { RadioGroupField as be } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
|
|
22
|
+
const Me = m.object({
|
|
23
23
|
hourlyCompensations: m.record(m.string(), m.record(m.string(), m.string().optional())),
|
|
24
24
|
timeOffCompensations: m.record(m.string(), m.string().optional()),
|
|
25
25
|
fixedCompensations: m.record(m.string(), m.string().optional()),
|
|
26
|
-
paymentMethod: m.nativeEnum(
|
|
27
|
-
}),
|
|
26
|
+
paymentMethod: m.nativeEnum(S).optional()
|
|
27
|
+
}), H = (E, O, d, s) => {
|
|
28
28
|
const g = {
|
|
29
29
|
...O,
|
|
30
30
|
paymentMethod: E.paymentMethod
|
|
@@ -44,7 +44,7 @@ const be = m.object({
|
|
|
44
44
|
const b = [];
|
|
45
45
|
return Object.entries(E.fixedCompensations).forEach(([i, l]) => {
|
|
46
46
|
const C = O?.fixedCompensations?.find(
|
|
47
|
-
(
|
|
47
|
+
(A) => A.name?.toLowerCase() === i.toLowerCase()
|
|
48
48
|
);
|
|
49
49
|
l && (C ? b.push({
|
|
50
50
|
name: C.name,
|
|
@@ -56,7 +56,7 @@ const be = m.object({
|
|
|
56
56
|
amount: l
|
|
57
57
|
}));
|
|
58
58
|
}), g.fixedCompensations = b, g;
|
|
59
|
-
},
|
|
59
|
+
}, qe = ({
|
|
60
60
|
onSave: E,
|
|
61
61
|
onCancel: O,
|
|
62
62
|
employee: d,
|
|
@@ -65,30 +65,31 @@ const be = m.object({
|
|
|
65
65
|
fixedCompensationTypes: b,
|
|
66
66
|
payPeriodStartDate: i,
|
|
67
67
|
paySchedule: l,
|
|
68
|
-
isOffCycle: C = !1
|
|
68
|
+
isOffCycle: C = !1,
|
|
69
|
+
withReimbursements: A = !0
|
|
69
70
|
}) => {
|
|
70
|
-
const { Button:
|
|
71
|
+
const { Button: v, Heading: c, Text: $ } = ne(), { t } = J("Payroll.PayrollEditEmployee");
|
|
71
72
|
re("Payroll.PayrollEditEmployee");
|
|
72
|
-
const f = d.jobs?.find((e) => e.primary), T = f ? [f] : [],
|
|
73
|
-
ref:
|
|
73
|
+
const f = d.jobs?.find((e) => e.primary), T = f ? [f] : [], F = Q(null), p = ge({
|
|
74
|
+
ref: F
|
|
74
75
|
}).includes("small");
|
|
75
76
|
s?.hourlyCompensations?.forEach((e) => {
|
|
76
77
|
const n = d.jobs?.find((o) => o.uuid === e.jobUuid);
|
|
77
78
|
n && !T.find((o) => o.uuid === n.uuid) && T.push(n);
|
|
78
79
|
});
|
|
79
|
-
const
|
|
80
|
+
const x = (s?.paidTimeOff || []).filter((e) => e.name), _ = ae({
|
|
80
81
|
flsaStatus: f?.compensations?.[0]?.flsaStatus,
|
|
81
82
|
existingFixedCompensations: s?.fixedCompensations || [],
|
|
82
83
|
primaryJobUuid: f?.uuid,
|
|
83
84
|
fixedCompensationTypes: b,
|
|
84
85
|
excludedTypes: le
|
|
85
|
-
}), N = me(
|
|
86
|
+
}), N = A ? me(
|
|
86
87
|
s?.fixedCompensations || [],
|
|
87
88
|
b,
|
|
88
89
|
f?.uuid
|
|
89
|
-
),
|
|
90
|
+
) : null, j = (e, n) => s?.hourlyCompensations?.find(
|
|
90
91
|
(o) => o.jobUuid === e && o.name?.toLowerCase() === n.toLowerCase()
|
|
91
|
-
),
|
|
92
|
+
), B = (e) => {
|
|
92
93
|
switch (e) {
|
|
93
94
|
case ce:
|
|
94
95
|
return t("compensationNames.regularHours");
|
|
@@ -99,7 +100,7 @@ const be = m.object({
|
|
|
99
100
|
default:
|
|
100
101
|
return e;
|
|
101
102
|
}
|
|
102
|
-
},
|
|
103
|
+
}, L = (e) => {
|
|
103
104
|
switch (e) {
|
|
104
105
|
case Ee:
|
|
105
106
|
return t("fixedCompensationNames.bonus");
|
|
@@ -116,19 +117,19 @@ const be = m.object({
|
|
|
116
117
|
default:
|
|
117
118
|
return e;
|
|
118
119
|
}
|
|
119
|
-
},
|
|
120
|
+
}, q = {
|
|
120
121
|
hourlyCompensations: (() => {
|
|
121
122
|
const e = {};
|
|
122
123
|
return T.forEach((n) => {
|
|
123
|
-
|
|
124
|
-
const h =
|
|
124
|
+
w.forEach((o) => {
|
|
125
|
+
const h = j(n.uuid, o);
|
|
125
126
|
h && (e[n.uuid] || (e[n.uuid] = {}), e[n.uuid][h.name] = h.hours ? parseFloat(h.hours).toString() : "");
|
|
126
127
|
});
|
|
127
128
|
}), e;
|
|
128
129
|
})(),
|
|
129
130
|
timeOffCompensations: (() => {
|
|
130
131
|
const e = {};
|
|
131
|
-
return
|
|
132
|
+
return x.forEach((n) => {
|
|
132
133
|
e[n.name] = n.hours ? parseFloat(n.hours).toString() : "";
|
|
133
134
|
}), e;
|
|
134
135
|
})(),
|
|
@@ -138,30 +139,30 @@ const be = m.object({
|
|
|
138
139
|
e[n.name] = n.amount ? n.amount : "";
|
|
139
140
|
}), N && (e[N.name] = N.amount ? N.amount : ""), e;
|
|
140
141
|
})(),
|
|
141
|
-
paymentMethod: s?.paymentMethod ||
|
|
142
|
-
}, I =
|
|
143
|
-
resolver:
|
|
144
|
-
defaultValues:
|
|
145
|
-
}), M =
|
|
142
|
+
paymentMethod: s?.paymentMethod || S.DirectDeposit
|
|
143
|
+
}, I = Y({
|
|
144
|
+
resolver: ee(Me),
|
|
145
|
+
defaultValues: q
|
|
146
|
+
}), M = K({
|
|
146
147
|
control: I.control
|
|
147
|
-
}),
|
|
148
|
+
}), V = Z(() => {
|
|
148
149
|
try {
|
|
149
150
|
const e = {};
|
|
150
|
-
M.hourlyCompensations && Object.entries(M.hourlyCompensations).forEach(([h,
|
|
151
|
-
|
|
151
|
+
M.hourlyCompensations && Object.entries(M.hourlyCompensations).forEach(([h, G]) => {
|
|
152
|
+
G && (e[h] = G);
|
|
152
153
|
});
|
|
153
154
|
const n = {
|
|
154
155
|
hourlyCompensations: e,
|
|
155
156
|
timeOffCompensations: M.timeOffCompensations || {},
|
|
156
157
|
fixedCompensations: M.fixedCompensations || {},
|
|
157
158
|
paymentMethod: M.paymentMethod
|
|
158
|
-
}, o =
|
|
159
|
+
}, o = H(
|
|
159
160
|
n,
|
|
160
161
|
s,
|
|
161
162
|
(s?.paidTimeOff || []).filter((h) => h.name),
|
|
162
163
|
f?.uuid
|
|
163
164
|
);
|
|
164
|
-
return
|
|
165
|
+
return k(
|
|
165
166
|
o,
|
|
166
167
|
d,
|
|
167
168
|
i,
|
|
@@ -169,7 +170,7 @@ const be = m.object({
|
|
|
169
170
|
C
|
|
170
171
|
);
|
|
171
172
|
} catch {
|
|
172
|
-
return s ?
|
|
173
|
+
return s ? k(
|
|
173
174
|
s,
|
|
174
175
|
d,
|
|
175
176
|
i,
|
|
@@ -185,18 +186,18 @@ const be = m.object({
|
|
|
185
186
|
i,
|
|
186
187
|
l,
|
|
187
188
|
C
|
|
188
|
-
]),
|
|
189
|
+
]), z = se({
|
|
189
190
|
first_name: d.firstName,
|
|
190
191
|
last_name: d.lastName
|
|
191
|
-
}),
|
|
192
|
-
const n =
|
|
192
|
+
}), W = (e) => {
|
|
193
|
+
const n = H(
|
|
193
194
|
e,
|
|
194
195
|
s,
|
|
195
|
-
|
|
196
|
+
x,
|
|
196
197
|
f?.uuid
|
|
197
198
|
);
|
|
198
199
|
E(n);
|
|
199
|
-
},
|
|
200
|
+
}, U = oe(V || 0), D = /* @__PURE__ */ a(
|
|
200
201
|
y,
|
|
201
202
|
{
|
|
202
203
|
flexDirection: p ? "row" : "column",
|
|
@@ -204,11 +205,11 @@ const be = m.object({
|
|
|
204
205
|
alignItems: p ? "flex-start" : "stretch",
|
|
205
206
|
gap: 12,
|
|
206
207
|
children: [
|
|
207
|
-
/* @__PURE__ */ r(
|
|
208
|
+
/* @__PURE__ */ r(v, { variant: "secondary", onClick: O, title: t("cancelCta"), children: t("cancelCta") }),
|
|
208
209
|
/* @__PURE__ */ r(
|
|
209
|
-
|
|
210
|
+
v,
|
|
210
211
|
{
|
|
211
|
-
onClick: I.handleSubmit(
|
|
212
|
+
onClick: I.handleSubmit(W),
|
|
212
213
|
title: t("saveCta"),
|
|
213
214
|
isLoading: g,
|
|
214
215
|
children: t("saveCta")
|
|
@@ -217,31 +218,31 @@ const be = m.object({
|
|
|
217
218
|
]
|
|
218
219
|
}
|
|
219
220
|
);
|
|
220
|
-
return /* @__PURE__ */ a("div", { ref:
|
|
221
|
+
return /* @__PURE__ */ a("div", { ref: F, className: u.container, children: [
|
|
221
222
|
/* @__PURE__ */ r(
|
|
222
223
|
"div",
|
|
223
224
|
{
|
|
224
225
|
className: `${u.headerSection} ${p ? "" : u.headerSectionSticky}`,
|
|
225
226
|
children: /* @__PURE__ */ a(y, { justifyContent: "space-between", children: [
|
|
226
227
|
/* @__PURE__ */ a(y, { flexDirection: "column", gap: p ? 8 : 2, children: [
|
|
227
|
-
/* @__PURE__ */ r(c, { as: "h1", styledAs: p ? "h2" : "h4", children: t("pageTitle", { employeeName:
|
|
228
|
+
/* @__PURE__ */ r(c, { as: "h1", styledAs: p ? "h2" : "h4", children: t("pageTitle", { employeeName: z }) }),
|
|
228
229
|
p ? /* @__PURE__ */ a(y, { flexDirection: "column", gap: 6, children: [
|
|
229
|
-
/* @__PURE__ */ r(c, { as: "h2", styledAs: "h3", children:
|
|
230
|
-
/* @__PURE__ */ r(
|
|
231
|
-
] }) : /* @__PURE__ */ r(c, { as: "h2", styledAs: "h6", className: u.grossPayLabel, children: t("grossPayLabelMobile", { grossPay:
|
|
230
|
+
/* @__PURE__ */ r(c, { as: "h2", styledAs: "h3", children: U }),
|
|
231
|
+
/* @__PURE__ */ r($, { className: u.grossPayLabel, children: t("grossPayLabel") })
|
|
232
|
+
] }) : /* @__PURE__ */ r(c, { as: "h2", styledAs: "h6", className: u.grossPayLabel, children: t("grossPayLabelMobile", { grossPay: U }) })
|
|
232
233
|
] }),
|
|
233
|
-
p &&
|
|
234
|
+
p && D
|
|
234
235
|
] })
|
|
235
236
|
}
|
|
236
237
|
),
|
|
237
|
-
/* @__PURE__ */ a(
|
|
238
|
+
/* @__PURE__ */ a(X, { ...I, children: [
|
|
238
239
|
/* @__PURE__ */ a(ie, { children: [
|
|
239
240
|
T.length > 0 && /* @__PURE__ */ a("div", { className: u.fieldGroup, children: [
|
|
240
241
|
/* @__PURE__ */ r(c, { as: "h3", children: t("regularHoursTitle") }),
|
|
241
242
|
T.map((e) => /* @__PURE__ */ a(y, { flexDirection: "column", gap: 8, children: [
|
|
242
243
|
/* @__PURE__ */ r(c, { as: "h4", children: e.title }),
|
|
243
|
-
/* @__PURE__ */ r(
|
|
244
|
-
const o =
|
|
244
|
+
/* @__PURE__ */ r(P, { gridTemplateColumns: { base: "1fr", small: [320, 320] }, gap: 20, children: w.map((n) => {
|
|
245
|
+
const o = j(
|
|
245
246
|
e.uuid,
|
|
246
247
|
n
|
|
247
248
|
);
|
|
@@ -252,7 +253,7 @@ const be = m.object({
|
|
|
252
253
|
type: "number",
|
|
253
254
|
adornmentEnd: t("hoursUnit"),
|
|
254
255
|
isRequired: !0,
|
|
255
|
-
label:
|
|
256
|
+
label: B(n),
|
|
256
257
|
name: `hourlyCompensations.${e.uuid}.${o.name}`
|
|
257
258
|
},
|
|
258
259
|
n
|
|
@@ -260,10 +261,10 @@ const be = m.object({
|
|
|
260
261
|
}) })
|
|
261
262
|
] }, e.uuid))
|
|
262
263
|
] }),
|
|
263
|
-
|
|
264
|
+
x.length > 0 && /* @__PURE__ */ a("div", { className: u.fieldGroup, children: [
|
|
264
265
|
/* @__PURE__ */ r(c, { as: "h4", children: t("timeOffTitle") }),
|
|
265
|
-
/* @__PURE__ */ r(
|
|
266
|
-
|
|
266
|
+
/* @__PURE__ */ r(P, { gridTemplateColumns: { base: "1fr", small: [320, 320] }, gap: 20, children: x.map((e) => /* @__PURE__ */ r(
|
|
267
|
+
te,
|
|
267
268
|
{
|
|
268
269
|
timeOff: e,
|
|
269
270
|
employee: d
|
|
@@ -274,7 +275,7 @@ const be = m.object({
|
|
|
274
275
|
_.length > 0 && /* @__PURE__ */ a("div", { className: u.fieldGroup, children: [
|
|
275
276
|
/* @__PURE__ */ r(c, { as: "h4", children: t("additionalEarningsTitle") }),
|
|
276
277
|
/* @__PURE__ */ r(
|
|
277
|
-
|
|
278
|
+
P,
|
|
278
279
|
{
|
|
279
280
|
gridTemplateColumns: { base: "1fr", small: [320, 320], large: [320, 320, 320] },
|
|
280
281
|
gap: 20,
|
|
@@ -284,7 +285,7 @@ const be = m.object({
|
|
|
284
285
|
type: "number",
|
|
285
286
|
adornmentStart: "$",
|
|
286
287
|
isRequired: !0,
|
|
287
|
-
label:
|
|
288
|
+
label: L(e.name),
|
|
288
289
|
name: `fixedCompensations.${e.name}`
|
|
289
290
|
},
|
|
290
291
|
e.name
|
|
@@ -294,13 +295,13 @@ const be = m.object({
|
|
|
294
295
|
] }),
|
|
295
296
|
N && /* @__PURE__ */ a("div", { className: u.fieldGroup, children: [
|
|
296
297
|
/* @__PURE__ */ r(c, { as: "h4", children: t("reimbursementTitle") }),
|
|
297
|
-
/* @__PURE__ */ r(
|
|
298
|
+
/* @__PURE__ */ r(P, { gridTemplateColumns: { base: "1fr", small: [320, 320] }, gap: 20, children: /* @__PURE__ */ r(
|
|
298
299
|
R,
|
|
299
300
|
{
|
|
300
301
|
type: "number",
|
|
301
302
|
adornmentStart: "$",
|
|
302
303
|
isRequired: !0,
|
|
303
|
-
label:
|
|
304
|
+
label: L(N.name),
|
|
304
305
|
name: `fixedCompensations.${N.name}`
|
|
305
306
|
}
|
|
306
307
|
) })
|
|
@@ -308,7 +309,7 @@ const be = m.object({
|
|
|
308
309
|
/* @__PURE__ */ a("div", { className: u.fieldGroup, children: [
|
|
309
310
|
/* @__PURE__ */ r(c, { as: "h4", children: t("paymentMethodTitle") }),
|
|
310
311
|
/* @__PURE__ */ r(
|
|
311
|
-
|
|
312
|
+
be,
|
|
312
313
|
{
|
|
313
314
|
name: "paymentMethod",
|
|
314
315
|
isRequired: !0,
|
|
@@ -316,11 +317,11 @@ const be = m.object({
|
|
|
316
317
|
description: t("paymentMethodDescription"),
|
|
317
318
|
options: [
|
|
318
319
|
{
|
|
319
|
-
value:
|
|
320
|
+
value: S.DirectDeposit,
|
|
320
321
|
label: t("paymentMethodOptions.directDeposit")
|
|
321
322
|
},
|
|
322
323
|
{
|
|
323
|
-
value:
|
|
324
|
+
value: S.Check,
|
|
324
325
|
label: t("paymentMethodOptions.check")
|
|
325
326
|
}
|
|
326
327
|
]
|
|
@@ -328,12 +329,12 @@ const be = m.object({
|
|
|
328
329
|
)
|
|
329
330
|
] })
|
|
330
331
|
] }),
|
|
331
|
-
!p &&
|
|
332
|
+
!p && D
|
|
332
333
|
] })
|
|
333
334
|
] });
|
|
334
335
|
};
|
|
335
336
|
export {
|
|
336
|
-
|
|
337
|
-
|
|
337
|
+
Me as PayrollEditEmployeeFormSchema,
|
|
338
|
+
qe as PayrollEditEmployeePresentation
|
|
338
339
|
};
|
|
339
340
|
//# sourceMappingURL=PayrollEditEmployeePresentation.js.map
|