@gusto/embedded-react-sdk 0.34.0 → 0.35.0-rc.2
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 +38 -0
- package/dist/components/Base/Base.d.ts +6 -2
- package/dist/components/Base/Base.js +105 -59
- package/dist/components/Base/Base.js.map +1 -1
- package/dist/components/Base/useBase.d.ts +1 -0
- package/dist/components/Base/useBase.js.map +1 -1
- package/dist/components/Base/useBaseSubmit.d.ts +1 -1
- package/dist/components/Base/useBaseSubmit.js +60 -33
- package/dist/components/Base/useBaseSubmit.js.map +1 -1
- package/dist/components/Common/HamburgerMenu/HamburgerMenu.d.ts +1 -1
- package/dist/components/Common/HamburgerMenu/HamburgerMenu.js +15 -13
- package/dist/components/Common/HamburgerMenu/HamburgerMenu.js.map +1 -1
- package/dist/components/Common/HamburgerMenu/HamburgerMenuTypes.d.ts +1 -0
- package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
- package/dist/components/Common/UI/Menu/Menu.js +26 -25
- package/dist/components/Common/UI/Menu/Menu.js.map +1 -1
- package/dist/components/Common/UI/Menu/Menu.module.scss.js +7 -7
- package/dist/components/Common/UI/Menu/MenuTypes.d.ts +5 -0
- package/dist/components/Common/UI/Menu/MenuTypes.js +4 -3
- package/dist/components/Common/UI/Menu/MenuTypes.js.map +1 -1
- package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
- package/dist/components/Common/UI/Table/Table.module.scss.js +1 -1
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js +119 -113
- package/dist/components/Contractor/Payments/CreatePayment/CreatePayment.js.map +1 -1
- package/dist/components/Contractor/Profile/ContractorProfileForm.js +15 -15
- package/dist/components/Employee/Compensation/Edit.js +70 -70
- package/dist/components/Employee/Compensation/Edit.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/SignatureForm/Form.js +5 -5
- package/dist/components/Employee/DocumentSigner/SignatureForm/Form.js.map +1 -1
- package/dist/components/Employee/DocumentSigner/SignatureForm/Preview.js +8 -8
- package/dist/components/Employee/DocumentSigner/SignatureForm/Preview.js.map +1 -1
- package/dist/components/Employee/StateTaxes/StateTaxes.js +69 -61
- package/dist/components/Employee/StateTaxes/StateTaxes.js.map +1 -1
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.d.ts +2 -0
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +101 -0
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -0
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.module.scss.js +16 -0
- package/dist/components/Payroll/GrossUpModal/GrossUpModal.module.scss.js.map +1 -0
- package/dist/components/Payroll/GrossUpModal/GrossUpModalTypes.d.ts +7 -0
- package/dist/components/Payroll/GrossUpModal/index.d.ts +3 -0
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +86 -67
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +83 -49
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
- package/dist/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +6 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js +102 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js.map +1 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.module.scss.js +14 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.module.scss.js.map +1 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js +52 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js.map +1 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js +16 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js.map +1 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +12 -2
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js +15 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js.map +1 -0
- package/dist/components/Payroll/OffCycleTaxWithholdingTable/index.d.ts +2 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +212 -120
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.d.ts +3 -1
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +76 -64
- package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
- package/dist/components/Payroll/PayrollConfiguration/grossUpHelpers.d.ts +2 -0
- package/dist/components/Payroll/PayrollConfiguration/grossUpHelpers.js +11 -0
- package/dist/components/Payroll/PayrollConfiguration/grossUpHelpers.js.map +1 -0
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +67 -57
- package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
- package/dist/components/Payroll/usePreparedPayrollData.js +44 -43
- package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +2 -0
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js +58 -38
- package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
- package/dist/contexts/ObservabilityProvider/ObservabilityContext.d.ts +5 -0
- package/dist/contexts/ObservabilityProvider/ObservabilityContext.js +6 -0
- package/dist/contexts/ObservabilityProvider/ObservabilityContext.js.map +1 -0
- package/dist/contexts/ObservabilityProvider/ObservabilityProvider.d.ts +7 -0
- package/dist/contexts/ObservabilityProvider/ObservabilityProvider.js +11 -0
- package/dist/contexts/ObservabilityProvider/ObservabilityProvider.js.map +1 -0
- package/dist/contexts/ObservabilityProvider/index.d.ts +5 -0
- package/dist/contexts/ObservabilityProvider/observabilityUtils.d.ts +5 -0
- package/dist/contexts/ObservabilityProvider/observabilityUtils.js +45 -0
- package/dist/contexts/ObservabilityProvider/observabilityUtils.js.map +1 -0
- package/dist/contexts/ObservabilityProvider/sanitization.d.ts +19 -0
- package/dist/contexts/ObservabilityProvider/sanitization.js +95 -0
- package/dist/contexts/ObservabilityProvider/sanitization.js.map +1 -0
- package/dist/contexts/ObservabilityProvider/sanitization.test.d.ts +1 -0
- package/dist/contexts/ObservabilityProvider/useObservability.d.ts +2 -0
- package/dist/contexts/ObservabilityProvider/useObservability.js +11 -0
- package/dist/contexts/ObservabilityProvider/useObservability.js.map +1 -0
- package/dist/contexts/ObservabilityProvider/useSanitizedObservability.d.ts +8 -0
- package/dist/contexts/ObservabilityProvider/useSanitizedObservability.js +28 -0
- package/dist/contexts/ObservabilityProvider/useSanitizedObservability.js.map +1 -0
- package/dist/contexts/index.d.ts +2 -0
- package/dist/helpers/rem.d.ts +7 -3
- package/dist/helpers/rem.js +14 -10
- package/dist/helpers/rem.js.map +1 -1
- package/dist/helpers/rem.test.d.ts +1 -0
- package/dist/helpers/retryAsync.d.ts +7 -0
- package/dist/helpers/retryAsync.js +18 -0
- package/dist/helpers/retryAsync.js.map +1 -0
- package/dist/i18n/I18n.js +15 -15
- package/dist/i18n/I18n.js.map +1 -1
- package/dist/i18n/en/Company.PaySchedule.json.js +1 -1
- package/dist/i18n/en/Payroll.GrossUpModal.json.js +24 -0
- package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -0
- package/dist/i18n/en/Payroll.OffCycleTaxWithholding.json.js +13 -11
- package/dist/i18n/en/Payroll.OffCycleTaxWithholding.json.js.map +1 -1
- package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +19 -13
- package/dist/index.js.map +1 -1
- package/dist/shared/constants.d.ts +5 -0
- package/dist/shared/constants.js +11 -8
- package/dist/shared/constants.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/i18next.d.ts +26 -1
- package/dist/types/observability.d.ts +145 -0
- package/docs/reference/endpoint-inventory.json +10 -1
- package/package.json +21 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreatePayment.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePayment.tsx"],"sourcesContent":["import { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentGroupsCreateMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsCreate'\nimport type {\n ContractorPayments,\n PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody,\n SubmissionBlockers,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useMemo, useState } from 'react'\nimport DOMPurify from 'dompurify'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTranslation } from 'react-i18next'\nimport type { ContractorPaymentGroupPreview } from '@gusto/embedded-api/models/components/contractorpaymentgrouppreview'\nimport { useBankAccountsGet } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport { usePaymentConfigsGet } from '@gusto/embedded-api/react-query/paymentConfigsGet'\nimport type { InternalAlert } from '../types'\nimport { CreatePaymentPresentation } from './CreatePaymentPresentation'\nimport { EditContractorPaymentPresentation } from './EditContractorPaymentPresentation'\nimport {\n createEditContractorPaymentFormSchema,\n type EditContractorPaymentFormValues,\n} from './EditContractorPaymentFormSchema'\nimport { PreviewPresentation } from './PreviewPresentation'\nimport {\n payrollSubmitHandler,\n type ApiPayrollBlocker,\n} from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\ninterface CreatePaymentProps extends BaseComponentInterface<'Contractor.Payments.CreatePayment'> {\n companyId: string\n}\n\nexport function CreatePayment(props: CreatePaymentProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({ companyId, dictionary, onEvent }: CreatePaymentProps) => {\n useComponentDictionary('Contractor.Payments.CreatePayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const [isModalOpen, setIsModalOpen] = useState(false)\n const [paymentDate, setPaymentDate] = useState<string>(\n new Date().toISOString().split('T')[0] || '',\n )\n const { baseSubmitHandler } = useBase()\n const [alerts, setAlerts] = useState<Record<string, InternalAlert>>({})\n const [previewData, setPreviewData] = useState<ContractorPaymentGroupPreview | null>(null)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n\n const { mutateAsync: createContractorPaymentGroup, isPending: isCreatingContractorPaymentGroup } =\n useContractorPaymentGroupsCreateMutation()\n const {\n mutateAsync: previewContractorPaymentGroup,\n isPending: isPreviewingContractorPaymentGroup,\n } = useContractorPaymentGroupsPreviewMutation()\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.contractors || []).filter(\n contractor =>\n contractor.isActive &&\n contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED,\n )\n const { data: bankAccounts } = useBankAccountsGet({ companyId })\n const { data: paymentConfigs } = usePaymentConfigsGet({ companyUuid: companyId })\n // Currently, we only support a single default bank account per company.\n const bankAccount = bankAccounts?.companyBankAccounts?.[0]\n const paymentSpeed = paymentConfigs?.paymentConfigs?.paymentSpeed\n\n const initialContractorPayments: (ContractorPayments & { isTouched: boolean })[] = useMemo(\n () =>\n contractors.map(contractor => {\n const paymentMethod = contractor.paymentMethod ? contractor.paymentMethod : 'Direct Deposit'\n\n return {\n contractorUuid: contractor.uuid,\n paymentMethod,\n wage: '0',\n hours: '0',\n bonus: '0',\n reimbursement: '0',\n isTouched: false,\n }\n }),\n [contractors],\n )\n const [virtualContractorPayments, setVirtualContractorPayments] =\n useState<(ContractorPayments & { isTouched: boolean })[]>(initialContractorPayments)\n const totals = useMemo(\n () =>\n virtualContractorPayments.reduce<{\n wage: number\n bonus: number\n reimbursement: number\n total: number\n }>(\n (acc, payment) => {\n const contractor = contractors.find(c => c.uuid === payment.contractorUuid)\n const isHourly = contractor?.wageType === 'Hourly'\n const hours = Number(payment.hours || '0')\n const wage = Number(payment.wage || '0')\n const bonus = Number(payment.bonus || '0')\n const reimbursement = Number(payment.reimbursement || '0')\n const hourlyAmount = isHourly ? hours * Number(contractor.hourlyRate || '0') : 0\n const fixedWage = isHourly ? 0 : wage\n\n return {\n wage: acc.wage + fixedWage,\n bonus: acc.bonus + bonus,\n reimbursement: acc.reimbursement + reimbursement,\n total: acc.total + hourlyAmount + fixedWage + bonus + reimbursement,\n }\n },\n { wage: 0, bonus: 0, reimbursement: 0, total: 0 },\n ),\n [virtualContractorPayments, contractors],\n )\n\n const formMethods = useForm<EditContractorPaymentFormValues>({\n resolver: zodResolver(createEditContractorPaymentFormSchema()),\n defaultValues: {\n wageType: 'Hourly',\n hours: 0,\n wage: 0,\n bonus: 0,\n reimbursement: 0,\n paymentMethod: 'Direct Deposit',\n hourlyRate: 0,\n contractorUuid: '',\n contractorPaymentMethod: undefined,\n },\n })\n\n const onCreatePaymentGroup = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0 || !previewData?.creationToken) {\n return\n }\n const creationToken = previewData.creationToken\n\n const submissionBlockers: SubmissionBlockers[] = Object.entries(selectedUnblockOptions).map(\n ([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n }),\n )\n\n const requestBody: PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody = {\n checkDate: new RFCDate(paymentDate),\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n creationToken,\n ...(submissionBlockers.length > 0 && { submissionBlockers }),\n }\n\n const response = await createContractorPaymentGroup({\n request: {\n companyId,\n requestBody,\n },\n })\n\n onEvent(componentEvents.CONTRACTOR_PAYMENT_CREATED, response.contractorPaymentGroup || {})\n })\n }\n\n const onUnblockOptionChange = (blockerType: string, value: string) => {\n setSelectedUnblockOptions(prev => ({\n ...prev,\n [blockerType]: value,\n }))\n }\n const onEditContractor = (contractorUuid: string) => {\n const contractor = contractors.find(contractor => contractor.uuid === contractorUuid)\n const contractorPayment = virtualContractorPayments.find(\n payment => payment.contractorUuid === contractorUuid,\n )\n\n const rawPaymentMethod = contractorPayment?.paymentMethod || 'Direct Deposit'\n const sanitizedPaymentMethod = ['Check', 'Direct Deposit'].includes(rawPaymentMethod)\n ? (rawPaymentMethod as 'Check' | 'Direct Deposit')\n : 'Check'\n\n formMethods.reset(\n {\n wageType: contractor?.wageType || 'Hourly',\n hours: Number(contractorPayment?.hours || '0'),\n wage: Number(contractorPayment?.wage || '0'),\n bonus: Number(contractorPayment?.bonus || '0'),\n reimbursement: Number(contractorPayment?.reimbursement || '0'),\n paymentMethod: sanitizedPaymentMethod,\n hourlyRate: Number(contractor?.hourlyRate || '0'),\n contractorUuid: contractorUuid,\n contractorPaymentMethod: contractor?.paymentMethod || undefined,\n },\n { keepDirty: false, keepValues: false },\n )\n setAlerts({})\n setIsModalOpen(true)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_EDIT)\n }\n\n const onEditContractorSubmit = (data: EditContractorPaymentFormValues) => {\n const currentContractor = contractors.find(c => c.uuid === data.contractorUuid)\n const currentContractorPaymentMethod = currentContractor?.paymentMethod\n\n if (!['Check', 'Direct Deposit'].includes(data.paymentMethod)) {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.unsupportedPaymentMethod'),\n })\n return\n }\n\n if (currentContractorPaymentMethod === 'Check' && data.paymentMethod === 'Direct Deposit') {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.directDepositNotAvailable'),\n })\n return\n }\n\n const hasAnyPayment =\n (data.wage ?? 0) > 0 ||\n (data.hours ?? 0) > 0 ||\n (data.bonus ?? 0) > 0 ||\n (data.reimbursement ?? 0) > 0\n\n setVirtualContractorPayments(prevPayments =>\n prevPayments.map(payment =>\n payment.contractorUuid === data.contractorUuid\n ? {\n contractorUuid: payment.contractorUuid,\n wage: String(data.wage ?? 0),\n hours: String(data.hours ?? 0),\n bonus: String(data.bonus ?? 0),\n reimbursement: String(data.reimbursement ?? 0),\n paymentMethod: data.paymentMethod,\n isTouched: hasAnyPayment,\n }\n : payment,\n ),\n )\n const displayContractor = contractors.find(\n contractor => contractor.uuid === data.contractorUuid,\n )\n const displayName = DOMPurify.sanitize(\n displayContractor?.type === 'Individual'\n ? firstLastName({\n first_name: displayContractor.firstName,\n last_name: displayContractor.lastName,\n })\n : displayContractor?.businessName || '',\n )\n setAlerts(prevAlerts => ({\n ...prevAlerts,\n [data.contractorUuid]: {\n type: 'success',\n title: t('alerts.contractorPaymentUpdated', {\n contractorName: displayName,\n interpolation: { escapeValue: false },\n }),\n onDismiss: () => {\n setAlerts(prevAlerts => {\n const { [data.contractorUuid]: _, ...rest } = prevAlerts\n return rest\n })\n },\n },\n }))\n setIsModalOpen(false)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_UPDATE, data)\n }\n\n const onContinueToPreview = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0) {\n setAlerts({\n ...alerts,\n error: {\n type: 'error',\n title: t('alerts.noContractorPayments'),\n },\n })\n return\n }\n setAlerts({})\n setPayrollBlockers([])\n\n const result = await payrollSubmitHandler(async () => {\n const response = await previewContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n checkDate: new RFCDate(paymentDate),\n },\n },\n })\n setPreviewData(response.contractorPaymentGroupPreview || null)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_PREVIEW, response.contractorPaymentGroupPreview)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onBackToEdit = () => {\n setPreviewData(null)\n setPayrollBlockers([])\n setSelectedUnblockOptions({})\n onEvent(componentEvents.CONTRACTOR_PAYMENT_BACK_TO_EDIT)\n }\n const onViewBlockers = () => {\n onEvent(componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND)\n }\n\n return (\n <>\n {previewData && (\n <PreviewPresentation\n contractorPaymentGroup={previewData}\n contractors={contractors}\n onBackToEdit={onBackToEdit}\n onSubmit={onCreatePaymentGroup}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n bankAccount={bankAccount}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={onUnblockOptionChange}\n paymentSpeed={paymentSpeed}\n />\n )}\n {!previewData && (\n <CreatePaymentPresentation\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n paymentDate={paymentDate}\n onPaymentDateChange={setPaymentDate}\n onSaveAndContinue={onContinueToPreview}\n onEditContractor={onEditContractor}\n totals={totals}\n alerts={alerts}\n payrollBlockers={payrollBlockers}\n onViewBlockers={onViewBlockers}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n />\n )}\n <EditContractorPaymentPresentation\n isOpen={isModalOpen}\n onClose={() => {\n setIsModalOpen(false)\n }}\n formMethods={formMethods}\n onSubmit={onEditContractorSubmit}\n contractorPaymentMethod={\n contractors.find(c => c.uuid === formMethods.getValues('contractorUuid'))\n ?.paymentMethod ?? undefined\n }\n />\n </>\n )\n}\n"],"names":["CreatePayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","useComponentDictionary","t","useTranslation","isModalOpen","setIsModalOpen","useState","paymentDate","setPaymentDate","baseSubmitHandler","useBase","alerts","setAlerts","previewData","setPreviewData","payrollBlockers","setPayrollBlockers","selectedUnblockOptions","setSelectedUnblockOptions","createContractorPaymentGroup","isCreatingContractorPaymentGroup","useContractorPaymentGroupsCreateMutation","previewContractorPaymentGroup","isPreviewingContractorPaymentGroup","useContractorPaymentGroupsPreviewMutation","contractorList","useContractorsListSuspense","contractors","contractor","ContractorOnboardingStatus","bankAccounts","useBankAccountsGet","paymentConfigs","usePaymentConfigsGet","bankAccount","paymentSpeed","initialContractorPayments","useMemo","paymentMethod","virtualContractorPayments","setVirtualContractorPayments","totals","acc","payment","c","isHourly","hours","wage","bonus","reimbursement","hourlyAmount","fixedWage","formMethods","useForm","zodResolver","createEditContractorPaymentFormSchema","jsxs","Fragment","PreviewPresentation","componentEvents","contractorPayments","creationToken","submissionBlockers","blockerType","selectedOption","requestBody","RFCDate","isTouched","rest","response","value","prev","CreatePaymentPresentation","result","payrollSubmitHandler","contractorUuid","contractorPayment","rawPaymentMethod","sanitizedPaymentMethod","EditContractorPaymentPresentation","data","currentContractorPaymentMethod","hasAnyPayment","prevPayments","displayContractor","displayName","DOMPurify","firstLastName","prevAlerts","_"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CreatePayment.js","sources":["../../../../../src/components/Contractor/Payments/CreatePayment/CreatePayment.tsx"],"sourcesContent":["import { useContractorsListSuspense } from '@gusto/embedded-api/react-query/contractorsList'\nimport { useContractorPaymentGroupsCreateMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsCreate'\nimport type {\n ContractorPayments,\n PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody,\n SubmissionBlockers,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidcontractorpaymentgroups'\nimport { useContractorPaymentGroupsPreviewMutation } from '@gusto/embedded-api/react-query/contractorPaymentGroupsPreview'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport DOMPurify from 'dompurify'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTranslation } from 'react-i18next'\nimport type { ContractorPaymentGroupPreview } from '@gusto/embedded-api/models/components/contractorpaymentgrouppreview'\nimport { useBankAccountsGet } from '@gusto/embedded-api/react-query/bankAccountsGet'\nimport { usePaymentConfigsGet } from '@gusto/embedded-api/react-query/paymentConfigsGet'\nimport type { InternalAlert } from '../types'\nimport { CreatePaymentPresentation } from './CreatePaymentPresentation'\nimport { EditContractorPaymentPresentation } from './EditContractorPaymentPresentation'\nimport {\n createEditContractorPaymentFormSchema,\n type EditContractorPaymentFormValues,\n} from './EditContractorPaymentFormSchema'\nimport { PreviewPresentation } from './PreviewPresentation'\nimport {\n payrollSubmitHandler,\n type ApiPayrollBlocker,\n} from '@/components/Payroll/PayrollBlocker/payrollHelpers'\nimport { useComponentDictionary } from '@/i18n'\nimport { BaseComponent, useBase, type BaseComponentInterface } from '@/components/Base'\nimport { componentEvents, ContractorOnboardingStatus } from '@/shared/constants'\nimport { firstLastName } from '@/helpers/formattedStrings'\n\ninterface CreatePaymentProps extends BaseComponentInterface<'Contractor.Payments.CreatePayment'> {\n companyId: string\n}\n\nexport function CreatePayment(props: CreatePaymentProps) {\n return (\n <BaseComponent {...props} componentName=\"Contractor.Payments.CreatePayment\">\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nexport const Root = ({ companyId, dictionary, onEvent }: CreatePaymentProps) => {\n useComponentDictionary('Contractor.Payments.CreatePayment', dictionary)\n const { t } = useTranslation('Contractor.Payments.CreatePayment')\n const [isModalOpen, setIsModalOpen] = useState(false)\n const { baseSubmitHandler } = useBase()\n const [alerts, setAlerts] = useState<Record<string, InternalAlert>>({})\n const [previewData, setPreviewData] = useState<ContractorPaymentGroupPreview | null>(null)\n const [payrollBlockers, setPayrollBlockers] = useState<ApiPayrollBlocker[]>([])\n const [selectedUnblockOptions, setSelectedUnblockOptions] = useState<Record<string, string>>({})\n\n const { mutateAsync: createContractorPaymentGroup, isPending: isCreatingContractorPaymentGroup } =\n useContractorPaymentGroupsCreateMutation()\n const {\n mutateAsync: previewContractorPaymentGroup,\n isPending: isPreviewingContractorPaymentGroup,\n } = useContractorPaymentGroupsPreviewMutation()\n\n const { data: contractorList } = useContractorsListSuspense({ companyUuid: companyId })\n const contractors = (contractorList.contractors || []).filter(\n contractor =>\n contractor.isActive &&\n contractor.onboardingStatus === ContractorOnboardingStatus.ONBOARDING_COMPLETED,\n )\n const { data: bankAccounts } = useBankAccountsGet({ companyId })\n const { data: paymentConfigs } = usePaymentConfigsGet({ companyUuid: companyId })\n const bankAccount = bankAccounts?.companyBankAccounts?.[0]\n const paymentSpeed = paymentConfigs?.paymentConfigs?.paymentSpeed\n\n const calculateInitialPaymentDate = (speed: string | undefined): string => {\n const today = new Date()\n let daysToAdd = 0\n\n if (speed === '1-day') {\n daysToAdd = 1\n } else if (speed === '2-day') {\n daysToAdd = 2\n } else if (speed === '4-day') {\n daysToAdd = 4\n }\n\n today.setDate(today.getDate() + daysToAdd)\n return today.toISOString().split('T')[0] || ''\n }\n\n const [paymentDate, setPaymentDate] = useState<string>(calculateInitialPaymentDate(paymentSpeed))\n const hasInitializedPaymentDateRef = useRef(false)\n\n useEffect(() => {\n if (paymentSpeed && !hasInitializedPaymentDateRef.current) {\n setPaymentDate(calculateInitialPaymentDate(paymentSpeed))\n hasInitializedPaymentDateRef.current = true\n }\n }, [paymentSpeed])\n\n const initialContractorPayments: (ContractorPayments & { isTouched: boolean })[] = useMemo(\n () =>\n contractors.map(contractor => {\n const paymentMethod = contractor.paymentMethod ? contractor.paymentMethod : 'Direct Deposit'\n\n return {\n contractorUuid: contractor.uuid,\n paymentMethod,\n wage: '0',\n hours: '0',\n bonus: '0',\n reimbursement: '0',\n isTouched: false,\n }\n }),\n [contractors],\n )\n const [virtualContractorPayments, setVirtualContractorPayments] =\n useState<(ContractorPayments & { isTouched: boolean })[]>(initialContractorPayments)\n const totals = useMemo(\n () =>\n virtualContractorPayments.reduce<{\n wage: number\n bonus: number\n reimbursement: number\n total: number\n }>(\n (acc, payment) => {\n const contractor = contractors.find(c => c.uuid === payment.contractorUuid)\n const isHourly = contractor?.wageType === 'Hourly'\n const hours = Number(payment.hours || '0')\n const wage = Number(payment.wage || '0')\n const bonus = Number(payment.bonus || '0')\n const reimbursement = Number(payment.reimbursement || '0')\n const hourlyAmount = isHourly ? hours * Number(contractor.hourlyRate || '0') : 0\n const fixedWage = isHourly ? 0 : wage\n\n return {\n wage: acc.wage + fixedWage,\n bonus: acc.bonus + bonus,\n reimbursement: acc.reimbursement + reimbursement,\n total: acc.total + hourlyAmount + fixedWage + bonus + reimbursement,\n }\n },\n { wage: 0, bonus: 0, reimbursement: 0, total: 0 },\n ),\n [virtualContractorPayments, contractors],\n )\n\n const formMethods = useForm<EditContractorPaymentFormValues>({\n resolver: zodResolver(createEditContractorPaymentFormSchema()),\n defaultValues: {\n wageType: 'Hourly',\n hours: 0,\n wage: 0,\n bonus: 0,\n reimbursement: 0,\n paymentMethod: 'Direct Deposit',\n hourlyRate: 0,\n contractorUuid: '',\n contractorPaymentMethod: undefined,\n },\n })\n\n const onCreatePaymentGroup = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0 || !previewData?.creationToken) {\n return\n }\n const creationToken = previewData.creationToken\n\n const submissionBlockers: SubmissionBlockers[] = Object.entries(selectedUnblockOptions).map(\n ([blockerType, selectedOption]) => ({\n blockerType,\n selectedOption,\n }),\n )\n\n const requestBody: PostV1CompaniesCompanyIdContractorPaymentGroupsRequestBody = {\n checkDate: new RFCDate(paymentDate),\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n creationToken,\n ...(submissionBlockers.length > 0 && { submissionBlockers }),\n }\n\n const response = await createContractorPaymentGroup({\n request: {\n companyId,\n requestBody,\n },\n })\n\n onEvent(componentEvents.CONTRACTOR_PAYMENT_CREATED, response.contractorPaymentGroup || {})\n })\n }\n\n const onUnblockOptionChange = (blockerType: string, value: string) => {\n setSelectedUnblockOptions(prev => ({\n ...prev,\n [blockerType]: value,\n }))\n }\n const onEditContractor = (contractorUuid: string) => {\n const contractor = contractors.find(contractor => contractor.uuid === contractorUuid)\n const contractorPayment = virtualContractorPayments.find(\n payment => payment.contractorUuid === contractorUuid,\n )\n\n const rawPaymentMethod = contractorPayment?.paymentMethod || 'Direct Deposit'\n const sanitizedPaymentMethod = ['Check', 'Direct Deposit'].includes(rawPaymentMethod)\n ? (rawPaymentMethod as 'Check' | 'Direct Deposit')\n : 'Check'\n\n formMethods.reset(\n {\n wageType: contractor?.wageType || 'Hourly',\n hours: Number(contractorPayment?.hours || '0'),\n wage: Number(contractorPayment?.wage || '0'),\n bonus: Number(contractorPayment?.bonus || '0'),\n reimbursement: Number(contractorPayment?.reimbursement || '0'),\n paymentMethod: sanitizedPaymentMethod,\n hourlyRate: Number(contractor?.hourlyRate || '0'),\n contractorUuid: contractorUuid,\n contractorPaymentMethod: contractor?.paymentMethod || undefined,\n },\n { keepDirty: false, keepValues: false },\n )\n setAlerts({})\n setIsModalOpen(true)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_EDIT)\n }\n\n const onEditContractorSubmit = (data: EditContractorPaymentFormValues) => {\n const currentContractor = contractors.find(c => c.uuid === data.contractorUuid)\n const currentContractorPaymentMethod = currentContractor?.paymentMethod\n\n if (!['Check', 'Direct Deposit'].includes(data.paymentMethod)) {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.unsupportedPaymentMethod'),\n })\n return\n }\n\n if (currentContractorPaymentMethod === 'Check' && data.paymentMethod === 'Direct Deposit') {\n formMethods.setError('paymentMethod', {\n type: 'manual',\n message: t('editContractorPayment.errors.directDepositNotAvailable'),\n })\n return\n }\n\n const hasAnyPayment =\n (data.wage ?? 0) > 0 ||\n (data.hours ?? 0) > 0 ||\n (data.bonus ?? 0) > 0 ||\n (data.reimbursement ?? 0) > 0\n\n setVirtualContractorPayments(prevPayments =>\n prevPayments.map(payment =>\n payment.contractorUuid === data.contractorUuid\n ? {\n contractorUuid: payment.contractorUuid,\n wage: String(data.wage ?? 0),\n hours: String(data.hours ?? 0),\n bonus: String(data.bonus ?? 0),\n reimbursement: String(data.reimbursement ?? 0),\n paymentMethod: data.paymentMethod,\n isTouched: hasAnyPayment,\n }\n : payment,\n ),\n )\n const displayContractor = contractors.find(\n contractor => contractor.uuid === data.contractorUuid,\n )\n const displayName = DOMPurify.sanitize(\n displayContractor?.type === 'Individual'\n ? firstLastName({\n first_name: displayContractor.firstName,\n last_name: displayContractor.lastName,\n })\n : displayContractor?.businessName || '',\n )\n setAlerts(prevAlerts => ({\n ...prevAlerts,\n [data.contractorUuid]: {\n type: 'success',\n title: t('alerts.contractorPaymentUpdated', {\n contractorName: displayName,\n interpolation: { escapeValue: false },\n }),\n onDismiss: () => {\n setAlerts(prevAlerts => {\n const { [data.contractorUuid]: _, ...rest } = prevAlerts\n return rest\n })\n },\n },\n }))\n setIsModalOpen(false)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_UPDATE, data)\n }\n\n const onContinueToPreview = async () => {\n await baseSubmitHandler(null, async () => {\n const contractorPayments = virtualContractorPayments.filter(payment => payment.isTouched)\n if (contractorPayments.length === 0) {\n setAlerts({\n ...alerts,\n error: {\n type: 'error',\n title: t('alerts.noContractorPayments'),\n },\n })\n return\n }\n setAlerts({})\n setPayrollBlockers([])\n\n const result = await payrollSubmitHandler(async () => {\n const response = await previewContractorPaymentGroup({\n request: {\n companyId,\n requestBody: {\n contractorPayments: contractorPayments.map(({ isTouched, ...rest }) => rest),\n checkDate: new RFCDate(paymentDate),\n },\n },\n })\n setPreviewData(response.contractorPaymentGroupPreview || null)\n onEvent(componentEvents.CONTRACTOR_PAYMENT_PREVIEW, response.contractorPaymentGroupPreview)\n })\n\n if (!result.success && result.blockers.length > 0) {\n setPayrollBlockers(result.blockers)\n }\n })\n }\n const onBackToEdit = () => {\n setPreviewData(null)\n setPayrollBlockers([])\n setSelectedUnblockOptions({})\n onEvent(componentEvents.CONTRACTOR_PAYMENT_BACK_TO_EDIT)\n }\n const onViewBlockers = () => {\n onEvent(componentEvents.CONTRACTOR_PAYMENT_RFI_RESPOND)\n }\n\n return (\n <>\n {previewData && (\n <PreviewPresentation\n contractorPaymentGroup={previewData}\n contractors={contractors}\n onBackToEdit={onBackToEdit}\n onSubmit={onCreatePaymentGroup}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n bankAccount={bankAccount}\n selectedUnblockOptions={selectedUnblockOptions}\n onUnblockOptionChange={onUnblockOptionChange}\n paymentSpeed={paymentSpeed}\n />\n )}\n {!previewData && (\n <CreatePaymentPresentation\n contractors={contractors}\n contractorPayments={virtualContractorPayments}\n paymentDate={paymentDate}\n onPaymentDateChange={setPaymentDate}\n onSaveAndContinue={onContinueToPreview}\n onEditContractor={onEditContractor}\n totals={totals}\n alerts={alerts}\n payrollBlockers={payrollBlockers}\n onViewBlockers={onViewBlockers}\n isLoading={isCreatingContractorPaymentGroup || isPreviewingContractorPaymentGroup}\n />\n )}\n <EditContractorPaymentPresentation\n isOpen={isModalOpen}\n onClose={() => {\n setIsModalOpen(false)\n }}\n formMethods={formMethods}\n onSubmit={onEditContractorSubmit}\n contractorPaymentMethod={\n contractors.find(c => c.uuid === formMethods.getValues('contractorUuid'))\n ?.paymentMethod ?? undefined\n }\n />\n </>\n )\n}\n"],"names":["CreatePayment","props","jsx","BaseComponent","Root","companyId","dictionary","onEvent","useComponentDictionary","t","useTranslation","isModalOpen","setIsModalOpen","useState","baseSubmitHandler","useBase","alerts","setAlerts","previewData","setPreviewData","payrollBlockers","setPayrollBlockers","selectedUnblockOptions","setSelectedUnblockOptions","createContractorPaymentGroup","isCreatingContractorPaymentGroup","useContractorPaymentGroupsCreateMutation","previewContractorPaymentGroup","isPreviewingContractorPaymentGroup","useContractorPaymentGroupsPreviewMutation","contractorList","useContractorsListSuspense","contractors","contractor","ContractorOnboardingStatus","bankAccounts","useBankAccountsGet","paymentConfigs","usePaymentConfigsGet","bankAccount","paymentSpeed","calculateInitialPaymentDate","speed","today","daysToAdd","paymentDate","setPaymentDate","hasInitializedPaymentDateRef","useRef","useEffect","initialContractorPayments","useMemo","paymentMethod","virtualContractorPayments","setVirtualContractorPayments","totals","acc","payment","c","isHourly","hours","wage","bonus","reimbursement","hourlyAmount","fixedWage","formMethods","useForm","zodResolver","createEditContractorPaymentFormSchema","jsxs","Fragment","PreviewPresentation","componentEvents","contractorPayments","creationToken","submissionBlockers","blockerType","selectedOption","requestBody","RFCDate","isTouched","rest","response","value","prev","CreatePaymentPresentation","result","payrollSubmitHandler","contractorUuid","contractorPayment","rawPaymentMethod","sanitizedPaymentMethod","EditContractorPaymentPresentation","data","currentContractorPaymentMethod","hasAnyPayment","prevPayments","displayContractor","displayName","DOMPurify","firstLastName","prevAlerts","_"],"mappings":"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"}
|
|
@@ -6,15 +6,15 @@ import { useComponentContext as D } from "../../../contexts/ComponentAdapter/use
|
|
|
6
6
|
import { useI18n as I } from "../../../i18n/I18n.js";
|
|
7
7
|
import { Form as O } from "../../Common/Form/Form.js";
|
|
8
8
|
import { Grid as n } from "../../Common/Grid/Grid.js";
|
|
9
|
+
import { Flex as x } from "../../Common/Flex/Flex.js";
|
|
9
10
|
import { TextInputField as l } from "../../Common/Fields/TextInputField/TextInputField.js";
|
|
10
|
-
import { NumberInputField as
|
|
11
|
+
import { NumberInputField as w } from "../../Common/Fields/NumberInputField/NumberInputField.js";
|
|
11
12
|
import { RadioGroupField as d } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
|
|
12
|
-
import { SwitchField as
|
|
13
|
-
import { DatePickerField as
|
|
14
|
-
import { usePlaceholderSSN as
|
|
15
|
-
import { usePlaceholderEin as
|
|
16
|
-
import { ContractorOnboardingStatus as
|
|
17
|
-
import { Flex as B } from "../../Common/Flex/Flex.js";
|
|
13
|
+
import { SwitchField as E } from "../../Common/Fields/SwitchField/SwitchField.js";
|
|
14
|
+
import { DatePickerField as j } from "../../Common/Fields/DatePickerField/DatePickerField.js";
|
|
15
|
+
import { usePlaceholderSSN as v, normalizeSSN as G } from "../../../helpers/ssn.js";
|
|
16
|
+
import { usePlaceholderEin as z, normalizeEin as A } from "../../../helpers/federalEin.js";
|
|
17
|
+
import { ContractorOnboardingStatus as B } from "../../../shared/constants.js";
|
|
18
18
|
function re({
|
|
19
19
|
formMethods: u,
|
|
20
20
|
handleSubmit: f,
|
|
@@ -33,7 +33,7 @@ function re({
|
|
|
33
33
|
}) {
|
|
34
34
|
const a = D();
|
|
35
35
|
I("Contractor.Profile");
|
|
36
|
-
const { t: e } = T("Contractor.Profile"), q =
|
|
36
|
+
const { t: e } = T("Contractor.Profile"), q = v(t?.hasSsn ?? !1), P = z(t?.hasEin ?? !1);
|
|
37
37
|
return /* @__PURE__ */ i("section", { className: F, children: /* @__PURE__ */ i(S, { ...u, children: /* @__PURE__ */ r(O, { onSubmit: f, children: [
|
|
38
38
|
/* @__PURE__ */ r(n, { gridTemplateColumns: "1fr", gap: 24, className: "mb-8", children: [
|
|
39
39
|
/* @__PURE__ */ r("header", { children: [
|
|
@@ -42,12 +42,12 @@ function re({
|
|
|
42
42
|
] }),
|
|
43
43
|
/* @__PURE__ */ i("div", { className: C.switchFieldContainer, children: /* @__PURE__ */ r(n, { gap: 16, children: [
|
|
44
44
|
/* @__PURE__ */ i(
|
|
45
|
-
|
|
45
|
+
E,
|
|
46
46
|
{
|
|
47
47
|
name: "selfOnboarding",
|
|
48
48
|
label: e("fields.selfOnboarding.label"),
|
|
49
49
|
description: e("fields.selfOnboarding.description"),
|
|
50
|
-
isDisabled: t && t.onboardingStatus !==
|
|
50
|
+
isDisabled: t && t.onboardingStatus !== B.ADMIN_ONBOARDING_INCOMPLETE
|
|
51
51
|
}
|
|
52
52
|
),
|
|
53
53
|
p && /* @__PURE__ */ i(
|
|
@@ -81,7 +81,7 @@ function re({
|
|
|
81
81
|
name: "ssn",
|
|
82
82
|
label: e("fields.ssn.label"),
|
|
83
83
|
placeholder: q,
|
|
84
|
-
transform:
|
|
84
|
+
transform: G,
|
|
85
85
|
isRequired: !0
|
|
86
86
|
}
|
|
87
87
|
)
|
|
@@ -101,7 +101,7 @@ function re({
|
|
|
101
101
|
name: "ein",
|
|
102
102
|
label: e("fields.ein.label"),
|
|
103
103
|
placeholder: P,
|
|
104
|
-
transform:
|
|
104
|
+
transform: A,
|
|
105
105
|
isRequired: !0
|
|
106
106
|
}
|
|
107
107
|
)
|
|
@@ -116,7 +116,7 @@ function re({
|
|
|
116
116
|
}
|
|
117
117
|
),
|
|
118
118
|
h && /* @__PURE__ */ i(
|
|
119
|
-
|
|
119
|
+
w,
|
|
120
120
|
{
|
|
121
121
|
name: "hourlyRate",
|
|
122
122
|
label: e("fields.hourlyRate.label"),
|
|
@@ -126,7 +126,7 @@ function re({
|
|
|
126
126
|
}
|
|
127
127
|
),
|
|
128
128
|
/* @__PURE__ */ i(
|
|
129
|
-
|
|
129
|
+
j,
|
|
130
130
|
{
|
|
131
131
|
name: "startDate",
|
|
132
132
|
label: e("fields.startDate.label"),
|
|
@@ -135,7 +135,7 @@ function re({
|
|
|
135
135
|
}
|
|
136
136
|
)
|
|
137
137
|
] }),
|
|
138
|
-
/* @__PURE__ */ i(
|
|
138
|
+
/* @__PURE__ */ i(x, { gap: 12, justifyContent: "flex-end", children: /* @__PURE__ */ i(a.Button, { type: "submit", variant: "primary", isDisabled: o.isSubmitting, children: o.isSubmitting ? e(s ? "buttons.updating" : "buttons.creating") : e(s ? "buttons.update" : "buttons.create") }) })
|
|
139
139
|
] }) }) });
|
|
140
140
|
}
|
|
141
141
|
export {
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useMemo as
|
|
3
|
-
import { useFormContext as
|
|
4
|
-
import { useTranslation as
|
|
5
|
-
import { useCompensation as
|
|
6
|
-
import { FlsaStatus as a, PAY_PERIODS as r, FLSA_OVERTIME_SALARY_LIMIT as N } from "../../../shared/constants.js";
|
|
7
|
-
import
|
|
1
|
+
import { jsxs as O, Fragment as b, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo as P, useEffect as U } from "react";
|
|
3
|
+
import { useFormContext as k, useWatch as E } from "react-hook-form";
|
|
4
|
+
import { useTranslation as R, Trans as S } from "react-i18next";
|
|
5
|
+
import { useCompensation as Y, rateMinimumError as j, rateExemptThresholdError as w } from "./useCompensation.js";
|
|
6
|
+
import { FlsaStatus as a, PAY_PERIODS as r, TIP_CREDITS_UNSUPPORTED_STATES as x, FLSA_OVERTIME_SALARY_LIMIT as N } from "../../../shared/constants.js";
|
|
7
|
+
import X from "../../../hooks/useNumberFormatter.js";
|
|
8
8
|
import "classnames";
|
|
9
|
-
import { RadioGroupField as
|
|
10
|
-
import { TextInputField as
|
|
11
|
-
import { NumberInputField as
|
|
12
|
-
import { SwitchField as
|
|
13
|
-
import { useComponentContext as
|
|
14
|
-
import { WA_RISK_CLASS_CODES as
|
|
15
|
-
import { SelectField as
|
|
16
|
-
import { CheckboxField as
|
|
17
|
-
import { ComboBoxField as
|
|
18
|
-
const
|
|
19
|
-
const { t: e } =
|
|
20
|
-
() =>
|
|
9
|
+
import { RadioGroupField as B } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
|
|
10
|
+
import { TextInputField as J } from "../../Common/Fields/TextInputField/TextInputField.js";
|
|
11
|
+
import { NumberInputField as $ } from "../../Common/Fields/NumberInputField/NumberInputField.js";
|
|
12
|
+
import { SwitchField as K } from "../../Common/Fields/SwitchField/SwitchField.js";
|
|
13
|
+
import { useComponentContext as q } from "../../../contexts/ComponentAdapter/useComponentContext.js";
|
|
14
|
+
import { WA_RISK_CLASS_CODES as H } from "../../../models/WA_RISK_CODES.js";
|
|
15
|
+
import { SelectField as f } from "../../Common/Fields/SelectField/SelectField.js";
|
|
16
|
+
import { CheckboxField as V } from "../../Common/Fields/CheckboxField/CheckboxField.js";
|
|
17
|
+
import { ComboBoxField as G } from "../../Common/Fields/ComboBoxField/ComboBoxField.js";
|
|
18
|
+
const Oe = () => {
|
|
19
|
+
const { t: e } = R("Employee.Compensation"), l = X("currency"), C = q(), _ = P(
|
|
20
|
+
() => H.map(({ code: o, description: F }) => ({
|
|
21
21
|
value: o,
|
|
22
|
-
label: `${o}: ${
|
|
22
|
+
label: `${o}: ${F}`
|
|
23
23
|
})),
|
|
24
24
|
[]
|
|
25
25
|
), {
|
|
26
|
-
control:
|
|
27
|
-
register:
|
|
26
|
+
control: m,
|
|
27
|
+
register: T,
|
|
28
28
|
setValue: s,
|
|
29
|
-
formState: { errors:
|
|
30
|
-
} =
|
|
31
|
-
if (
|
|
32
|
-
i === a.OWNER ? s("paymentUnit", "Paycheck") : i === a.COMMISSION_ONLY_NONEXEMPT || i === a.COMMISSION_ONLY_EXEMPT ? (s("paymentUnit", "Year"), s("rate", 0)) :
|
|
33
|
-
}, [i, s,
|
|
29
|
+
formState: { errors: M, defaultValues: p }
|
|
30
|
+
} = k(), i = E({ control: m, name: "flsaStatus" }), h = E({ control: m, name: "stateWcCovered" }), W = E({ control: m, name: "adjustForMinimumWage" }), { currentJob: y, mode: n, minimumWages: I, handleFlsaChange: v, state: c, showTwoPercentStakeholder: L } = Y();
|
|
31
|
+
if (U(() => {
|
|
32
|
+
i === a.OWNER ? s("paymentUnit", "Paycheck") : i === a.COMMISSION_ONLY_NONEXEMPT || i === a.COMMISSION_ONLY_EXEMPT ? (s("paymentUnit", "Year"), s("rate", 0)) : p?.paymentUnit && s("paymentUnit", p.paymentUnit);
|
|
33
|
+
}, [i, s, p?.paymentUnit]), !(n === "ADD_INITIAL_JOB" || n === "ADD_ADDITIONAL_JOB" || n === "EDIT_INITIAL_JOB" || n === "EDIT_ADDITIONAL_JOB"))
|
|
34
34
|
return;
|
|
35
|
-
const
|
|
35
|
+
const g = Object.keys(a).map(
|
|
36
36
|
(o) => ({
|
|
37
37
|
value: a[o],
|
|
38
38
|
label: e(`flsaStatusLabels.${a[o]}`)
|
|
39
39
|
})
|
|
40
|
-
),
|
|
40
|
+
), D = [
|
|
41
41
|
{ value: r.HOUR, label: e("paymentUnitOptions.Hour") },
|
|
42
42
|
{ value: r.WEEK, label: e("paymentUnitOptions.Week") },
|
|
43
43
|
{ value: r.MONTH, label: e("paymentUnitOptions.Month") },
|
|
44
44
|
{ value: r.YEAR, label: e("paymentUnitOptions.Year") },
|
|
45
45
|
{ value: r.PAYCHECK, label: e("paymentUnitOptions.Paycheck") }
|
|
46
|
-
],
|
|
47
|
-
let
|
|
48
|
-
return
|
|
46
|
+
], u = i !== a.NONEXEMPT || y?.primary || n === "ADD_INITIAL_JOB", A = i === a.NONEXEMPT && I.length > 0 && c !== void 0 && !x.includes(c);
|
|
47
|
+
let d = e("validations.rate");
|
|
48
|
+
return M.rate?.message === j ? d = e("validations.nonZeroRate") : M.rate?.message === w && (d = e("validations.rateExemptThreshold", {
|
|
49
49
|
limit: l(N)
|
|
50
|
-
})), /* @__PURE__ */
|
|
50
|
+
})), /* @__PURE__ */ O(b, { children: [
|
|
51
51
|
/* @__PURE__ */ t(
|
|
52
|
-
|
|
52
|
+
J,
|
|
53
53
|
{
|
|
54
54
|
name: "jobTitle",
|
|
55
55
|
label: e("jobTitle"),
|
|
@@ -57,59 +57,71 @@ const ue = () => {
|
|
|
57
57
|
errorMessage: e("validations.title")
|
|
58
58
|
}
|
|
59
59
|
),
|
|
60
|
-
!
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
!u && /* @__PURE__ */ t("input", { type: "hidden", ...T("flsaStatus") }),
|
|
61
|
+
u && /* @__PURE__ */ t(
|
|
62
|
+
f,
|
|
63
63
|
{
|
|
64
64
|
name: "flsaStatus",
|
|
65
65
|
label: e("employeeClassification"),
|
|
66
66
|
description: /* @__PURE__ */ t(
|
|
67
|
-
|
|
67
|
+
S,
|
|
68
68
|
{
|
|
69
69
|
t: e,
|
|
70
70
|
i18nKey: "classificationLink",
|
|
71
71
|
components: {
|
|
72
|
-
ClassificationLink: /* @__PURE__ */ t(
|
|
72
|
+
ClassificationLink: /* @__PURE__ */ t(C.Link, {})
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
),
|
|
76
76
|
errorMessage: e("validations.exemptThreshold", {
|
|
77
77
|
limit: l(N)
|
|
78
78
|
}),
|
|
79
|
-
options:
|
|
79
|
+
options: g,
|
|
80
80
|
isRequired: !0,
|
|
81
|
-
isDisabled: !
|
|
82
|
-
onChange:
|
|
81
|
+
isDisabled: !u,
|
|
82
|
+
onChange: v
|
|
83
83
|
}
|
|
84
84
|
),
|
|
85
85
|
/* @__PURE__ */ t(
|
|
86
|
-
|
|
86
|
+
$,
|
|
87
87
|
{
|
|
88
88
|
name: "rate",
|
|
89
89
|
label: e("amount"),
|
|
90
90
|
format: "currency",
|
|
91
91
|
min: 0,
|
|
92
|
-
errorMessage:
|
|
92
|
+
errorMessage: d,
|
|
93
93
|
isRequired: !0,
|
|
94
94
|
isDisabled: i === a.COMMISSION_ONLY_NONEXEMPT || i === a.COMMISSION_ONLY_EXEMPT
|
|
95
95
|
}
|
|
96
96
|
),
|
|
97
|
-
|
|
97
|
+
/* @__PURE__ */ t(
|
|
98
|
+
f,
|
|
99
|
+
{
|
|
100
|
+
name: "paymentUnit",
|
|
101
|
+
label: e("paymentUnitLabel"),
|
|
102
|
+
description: e("paymentUnitDescription"),
|
|
103
|
+
options: D,
|
|
104
|
+
errorMessage: e("validations.paymentUnit"),
|
|
105
|
+
isRequired: !0,
|
|
106
|
+
isDisabled: i === a.OWNER || i === a.COMMISSION_ONLY_NONEXEMPT || i === a.COMMISSION_ONLY_EXEMPT
|
|
107
|
+
}
|
|
108
|
+
),
|
|
109
|
+
A && /* @__PURE__ */ O(b, { children: [
|
|
98
110
|
/* @__PURE__ */ t(
|
|
99
|
-
|
|
111
|
+
K,
|
|
100
112
|
{
|
|
101
113
|
name: "adjustForMinimumWage",
|
|
102
114
|
label: e("adjustForMinimumWage"),
|
|
103
115
|
description: e("adjustForMinimumWageDescription")
|
|
104
116
|
}
|
|
105
117
|
),
|
|
106
|
-
/* @__PURE__ */ t(
|
|
107
|
-
|
|
118
|
+
W && /* @__PURE__ */ t(
|
|
119
|
+
f,
|
|
108
120
|
{
|
|
109
121
|
name: "minimumWageId",
|
|
110
122
|
label: e("minimumWageLabel"),
|
|
111
123
|
description: e("minimumWageDescription"),
|
|
112
|
-
options:
|
|
124
|
+
options: I.map((o) => ({
|
|
113
125
|
value: o.uuid,
|
|
114
126
|
label: `${l(Number(o.wage))} - ${o.authority}: ${o.notes ?? ""}`
|
|
115
127
|
})),
|
|
@@ -117,33 +129,21 @@ const ue = () => {
|
|
|
117
129
|
}
|
|
118
130
|
)
|
|
119
131
|
] }),
|
|
120
|
-
/* @__PURE__ */ t(
|
|
121
|
-
|
|
122
|
-
{
|
|
123
|
-
name: "paymentUnit",
|
|
124
|
-
label: e("paymentUnitLabel"),
|
|
125
|
-
description: e("paymentUnitDescription"),
|
|
126
|
-
options: g,
|
|
127
|
-
errorMessage: e("validations.paymentUnit"),
|
|
128
|
-
isRequired: !0,
|
|
129
|
-
isDisabled: i === a.OWNER || i === a.COMMISSION_ONLY_NONEXEMPT || i === a.COMMISSION_ONLY_EXEMPT
|
|
130
|
-
}
|
|
131
|
-
),
|
|
132
|
-
T && /* @__PURE__ */ t(q, { label: e("twoPercentStakeholderLabel"), name: "twoPercentShareholder" }),
|
|
133
|
-
L === "WA" && /* @__PURE__ */ u(d, { children: [
|
|
132
|
+
L && /* @__PURE__ */ t(V, { label: e("twoPercentStakeholderLabel"), name: "twoPercentShareholder" }),
|
|
133
|
+
c === "WA" && /* @__PURE__ */ O(b, { children: [
|
|
134
134
|
/* @__PURE__ */ t(
|
|
135
|
-
|
|
135
|
+
B,
|
|
136
136
|
{
|
|
137
137
|
name: "stateWcCovered",
|
|
138
138
|
label: e("stateWcCoveredLabel"),
|
|
139
139
|
description: /* @__PURE__ */ t(
|
|
140
|
-
|
|
140
|
+
S,
|
|
141
141
|
{
|
|
142
142
|
t: e,
|
|
143
143
|
i18nKey: "stateWcCoveredDescription",
|
|
144
144
|
components: {
|
|
145
145
|
wcLink: /* @__PURE__ */ t(
|
|
146
|
-
|
|
146
|
+
C.Link,
|
|
147
147
|
{
|
|
148
148
|
href: "https://www.lni.wa.gov/insurance/rates-risk-classes/risk-classes-for-workers-compensation/risk-class-lookup#/",
|
|
149
149
|
target: "_blank",
|
|
@@ -159,12 +159,12 @@ const ue = () => {
|
|
|
159
159
|
]
|
|
160
160
|
}
|
|
161
161
|
),
|
|
162
|
-
|
|
163
|
-
|
|
162
|
+
h && /* @__PURE__ */ t(
|
|
163
|
+
G,
|
|
164
164
|
{
|
|
165
165
|
name: "stateWcClassCode",
|
|
166
166
|
label: e("stateWcClassCodeLabel"),
|
|
167
|
-
options:
|
|
167
|
+
options: _,
|
|
168
168
|
errorMessage: e("validations.stateWcClassCode"),
|
|
169
169
|
placeholder: e("stateWcClassCodeLabel"),
|
|
170
170
|
description: e("stateWcClassCodeDescription")
|
|
@@ -174,6 +174,6 @@ const ue = () => {
|
|
|
174
174
|
] });
|
|
175
175
|
};
|
|
176
176
|
export {
|
|
177
|
-
|
|
177
|
+
Oe as Edit
|
|
178
178
|
};
|
|
179
179
|
//# sourceMappingURL=Edit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Edit.js","sources":["../../../../src/components/Employee/Compensation/Edit.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react'\nimport { useFormContext, useWatch } from 'react-hook-form'\nimport { Trans, useTranslation } from 'react-i18next'\nimport {\n type CompensationInputs,\n useCompensation,\n rateMinimumError,\n rateExemptThresholdError,\n} from './useCompensation'\nimport { FLSA_OVERTIME_SALARY_LIMIT, FlsaStatus, PAY_PERIODS } from '@/shared/constants'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport {\n NumberInputField,\n SelectField,\n TextInputField,\n SwitchField,\n RadioGroupField,\n ComboBoxField,\n CheckboxField,\n} from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { WA_RISK_CLASS_CODES } from '@/models/WA_RISK_CODES'\n\nexport interface SelectCategory {\n id: string\n name: string\n}\n\nexport const Edit = () => {\n const { t } = useTranslation('Employee.Compensation')\n const format = useNumberFormatter('currency')\n const Components = useComponentContext()\n\n const stateWcRiskOptions = useMemo(\n () =>\n WA_RISK_CLASS_CODES.map(({ code, description }) => ({\n value: code,\n label: `${code}: ${description}`,\n })),\n [],\n )\n\n const {\n control,\n register,\n setValue,\n formState: { errors, defaultValues },\n } = useFormContext<CompensationInputs>()\n\n const watchedFlsaStatus = useWatch({ control, name: 'flsaStatus' })\n const watchedStateWcCovered = useWatch({ control, name: 'stateWcCovered' })\n const { currentJob, mode, minimumWages, handleFlsaChange, state, showTwoPercentStakeholder } =\n useCompensation()\n\n /**Correctly set payment unit selected option and rate based on flsa status, falling back to default */\n useEffect(() => {\n if (watchedFlsaStatus === FlsaStatus.OWNER) {\n setValue('paymentUnit', 'Paycheck')\n } else if (\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_NONEXEMPT ||\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_EXEMPT\n ) {\n setValue('paymentUnit', 'Year')\n setValue('rate', 0)\n } else if (defaultValues?.paymentUnit) {\n setValue('paymentUnit', defaultValues.paymentUnit)\n }\n }, [watchedFlsaStatus, setValue, defaultValues?.paymentUnit])\n\n if (\n !(\n mode === 'ADD_INITIAL_JOB' ||\n mode === 'ADD_ADDITIONAL_JOB' ||\n mode === 'EDIT_INITIAL_JOB' ||\n mode === 'EDIT_ADDITIONAL_JOB'\n )\n )\n return\n\n const classificationOptions = (Object.keys(FlsaStatus) as Array<keyof typeof FlsaStatus>).map(\n key => ({\n value: FlsaStatus[key],\n label: t(`flsaStatusLabels.${FlsaStatus[key]}`),\n }),\n )\n\n const paymentUnitOptions = [\n { value: PAY_PERIODS.HOUR, label: t('paymentUnitOptions.Hour') },\n { value: PAY_PERIODS.WEEK, label: t('paymentUnitOptions.Week') },\n { value: PAY_PERIODS.MONTH, label: t('paymentUnitOptions.Month') },\n { value: PAY_PERIODS.YEAR, label: t('paymentUnitOptions.Year') },\n { value: PAY_PERIODS.PAYCHECK, label: t('paymentUnitOptions.Paycheck') },\n ]\n\n const isFlsaSelectionEnabled =\n watchedFlsaStatus !== FlsaStatus.NONEXEMPT || currentJob?.primary || mode === 'ADD_INITIAL_JOB'\n\n const isAdjustMinimumWageEnabled =\n watchedFlsaStatus === FlsaStatus.NONEXEMPT && minimumWages.length > 0\n\n let rateErrorMessage = t('validations.rate')\n if (errors.rate?.message === rateMinimumError) {\n rateErrorMessage = t('validations.nonZeroRate')\n } else if (errors.rate?.message === rateExemptThresholdError) {\n rateErrorMessage = t('validations.rateExemptThreshold', {\n limit: format(FLSA_OVERTIME_SALARY_LIMIT),\n })\n }\n\n return (\n <>\n <TextInputField\n name=\"jobTitle\"\n label={t('jobTitle')}\n isRequired\n errorMessage={t('validations.title')}\n />\n {/* hiding flsa selection for secondary jobs */}\n {!isFlsaSelectionEnabled && <input type=\"hidden\" {...register('flsaStatus')} />}\n {isFlsaSelectionEnabled && (\n <SelectField\n name=\"flsaStatus\"\n label={t('employeeClassification')}\n description={\n <Trans\n t={t}\n i18nKey=\"classificationLink\"\n components={{\n ClassificationLink: <Components.Link />,\n }}\n />\n }\n errorMessage={t('validations.exemptThreshold', {\n limit: format(FLSA_OVERTIME_SALARY_LIMIT),\n })}\n options={classificationOptions}\n isRequired\n isDisabled={!isFlsaSelectionEnabled}\n onChange={handleFlsaChange}\n />\n )}\n <NumberInputField\n name=\"rate\"\n label={t('amount')}\n format=\"currency\"\n min={0}\n errorMessage={rateErrorMessage}\n isRequired\n isDisabled={\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_NONEXEMPT ||\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_EXEMPT\n }\n />\n {isAdjustMinimumWageEnabled && (\n <>\n <SwitchField\n name=\"adjustForMinimumWage\"\n label={t('adjustForMinimumWage')}\n description={t('adjustForMinimumWageDescription')}\n />\n <SelectField\n name=\"minimumWageId\"\n label={t('minimumWageLabel')}\n description={t('minimumWageDescription')}\n options={minimumWages.map(wage => ({\n value: wage.uuid,\n label: `${format(Number(wage.wage))} - ${wage.authority}: ${wage.notes ?? ''}`,\n }))}\n errorMessage={t('validations.minimumWage')}\n />\n </>\n )}\n <SelectField\n name=\"paymentUnit\"\n label={t('paymentUnitLabel')}\n description={t('paymentUnitDescription')}\n options={paymentUnitOptions}\n errorMessage={t('validations.paymentUnit')}\n isRequired\n isDisabled={\n watchedFlsaStatus === FlsaStatus.OWNER ||\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_NONEXEMPT ||\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_EXEMPT\n }\n />\n {showTwoPercentStakeholder && (\n <CheckboxField label={t('twoPercentStakeholderLabel')} name=\"twoPercentShareholder\" />\n )}\n {state === 'WA' && (\n <>\n <RadioGroupField\n name=\"stateWcCovered\"\n label={t('stateWcCoveredLabel')}\n description={\n <Trans\n t={t}\n i18nKey=\"stateWcCoveredDescription\"\n components={{\n wcLink: (\n <Components.Link\n href=\"https://www.lni.wa.gov/insurance/rates-risk-classes/risk-classes-for-workers-compensation/risk-class-lookup#/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n />\n ),\n }}\n />\n }\n options={[\n { label: t('stateWcCoveredOptions.yes'), value: true },\n { label: t('stateWcCoveredOptions.no'), value: false },\n ]}\n />\n {watchedStateWcCovered && (\n <ComboBoxField\n name=\"stateWcClassCode\"\n label={t('stateWcClassCodeLabel')}\n options={stateWcRiskOptions}\n errorMessage={t('validations.stateWcClassCode')}\n placeholder={t('stateWcClassCodeLabel')}\n description={t('stateWcClassCodeDescription')}\n />\n )}\n </>\n )}\n </>\n )\n}\n"],"names":["Edit","t","useTranslation","format","useNumberFormatter","Components","useComponentContext","stateWcRiskOptions","useMemo","WA_RISK_CLASS_CODES","code","description","control","register","setValue","errors","defaultValues","useFormContext","watchedFlsaStatus","useWatch","watchedStateWcCovered","currentJob","mode","minimumWages","handleFlsaChange","state","showTwoPercentStakeholder","useCompensation","useEffect","FlsaStatus","classificationOptions","key","paymentUnitOptions","PAY_PERIODS","isFlsaSelectionEnabled","isAdjustMinimumWageEnabled","rateErrorMessage","rateMinimumError","rateExemptThresholdError","FLSA_OVERTIME_SALARY_LIMIT","jsxs","Fragment","jsx","TextInputField","SelectField","Trans","NumberInputField","SwitchField","wage","CheckboxField","RadioGroupField","ComboBoxField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Edit.js","sources":["../../../../src/components/Employee/Compensation/Edit.tsx"],"sourcesContent":["import { useEffect, useMemo } from 'react'\nimport { useFormContext, useWatch } from 'react-hook-form'\nimport { Trans, useTranslation } from 'react-i18next'\nimport {\n type CompensationInputs,\n useCompensation,\n rateMinimumError,\n rateExemptThresholdError,\n} from './useCompensation'\nimport {\n FLSA_OVERTIME_SALARY_LIMIT,\n FlsaStatus,\n PAY_PERIODS,\n TIP_CREDITS_UNSUPPORTED_STATES,\n} from '@/shared/constants'\nimport useNumberFormatter from '@/hooks/useNumberFormatter'\nimport {\n NumberInputField,\n SelectField,\n TextInputField,\n SwitchField,\n RadioGroupField,\n ComboBoxField,\n CheckboxField,\n} from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { WA_RISK_CLASS_CODES } from '@/models/WA_RISK_CODES'\n\nexport interface SelectCategory {\n id: string\n name: string\n}\n\nexport const Edit = () => {\n const { t } = useTranslation('Employee.Compensation')\n const format = useNumberFormatter('currency')\n const Components = useComponentContext()\n\n const stateWcRiskOptions = useMemo(\n () =>\n WA_RISK_CLASS_CODES.map(({ code, description }) => ({\n value: code,\n label: `${code}: ${description}`,\n })),\n [],\n )\n\n const {\n control,\n register,\n setValue,\n formState: { errors, defaultValues },\n } = useFormContext<CompensationInputs>()\n\n const watchedFlsaStatus = useWatch({ control, name: 'flsaStatus' })\n const watchedStateWcCovered = useWatch({ control, name: 'stateWcCovered' })\n const isAdjustingMinimumWage = useWatch({ control, name: 'adjustForMinimumWage' })\n const { currentJob, mode, minimumWages, handleFlsaChange, state, showTwoPercentStakeholder } =\n useCompensation()\n\n /**Correctly set payment unit selected option and rate based on flsa status, falling back to default */\n useEffect(() => {\n if (watchedFlsaStatus === FlsaStatus.OWNER) {\n setValue('paymentUnit', 'Paycheck')\n } else if (\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_NONEXEMPT ||\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_EXEMPT\n ) {\n setValue('paymentUnit', 'Year')\n setValue('rate', 0)\n } else if (defaultValues?.paymentUnit) {\n setValue('paymentUnit', defaultValues.paymentUnit)\n }\n }, [watchedFlsaStatus, setValue, defaultValues?.paymentUnit])\n\n if (\n !(\n mode === 'ADD_INITIAL_JOB' ||\n mode === 'ADD_ADDITIONAL_JOB' ||\n mode === 'EDIT_INITIAL_JOB' ||\n mode === 'EDIT_ADDITIONAL_JOB'\n )\n )\n return\n\n const classificationOptions = (Object.keys(FlsaStatus) as Array<keyof typeof FlsaStatus>).map(\n key => ({\n value: FlsaStatus[key],\n label: t(`flsaStatusLabels.${FlsaStatus[key]}`),\n }),\n )\n\n const paymentUnitOptions = [\n { value: PAY_PERIODS.HOUR, label: t('paymentUnitOptions.Hour') },\n { value: PAY_PERIODS.WEEK, label: t('paymentUnitOptions.Week') },\n { value: PAY_PERIODS.MONTH, label: t('paymentUnitOptions.Month') },\n { value: PAY_PERIODS.YEAR, label: t('paymentUnitOptions.Year') },\n { value: PAY_PERIODS.PAYCHECK, label: t('paymentUnitOptions.Paycheck') },\n ]\n\n const isFlsaSelectionEnabled =\n watchedFlsaStatus !== FlsaStatus.NONEXEMPT || currentJob?.primary || mode === 'ADD_INITIAL_JOB'\n\n const isAdjustMinimumWageEnabled =\n watchedFlsaStatus === FlsaStatus.NONEXEMPT &&\n minimumWages.length > 0 &&\n state !== undefined &&\n !TIP_CREDITS_UNSUPPORTED_STATES.includes(state)\n\n let rateErrorMessage = t('validations.rate')\n if (errors.rate?.message === rateMinimumError) {\n rateErrorMessage = t('validations.nonZeroRate')\n } else if (errors.rate?.message === rateExemptThresholdError) {\n rateErrorMessage = t('validations.rateExemptThreshold', {\n limit: format(FLSA_OVERTIME_SALARY_LIMIT),\n })\n }\n\n return (\n <>\n <TextInputField\n name=\"jobTitle\"\n label={t('jobTitle')}\n isRequired\n errorMessage={t('validations.title')}\n />\n {/* hiding flsa selection for secondary jobs */}\n {!isFlsaSelectionEnabled && <input type=\"hidden\" {...register('flsaStatus')} />}\n {isFlsaSelectionEnabled && (\n <SelectField\n name=\"flsaStatus\"\n label={t('employeeClassification')}\n description={\n <Trans\n t={t}\n i18nKey=\"classificationLink\"\n components={{\n ClassificationLink: <Components.Link />,\n }}\n />\n }\n errorMessage={t('validations.exemptThreshold', {\n limit: format(FLSA_OVERTIME_SALARY_LIMIT),\n })}\n options={classificationOptions}\n isRequired\n isDisabled={!isFlsaSelectionEnabled}\n onChange={handleFlsaChange}\n />\n )}\n <NumberInputField\n name=\"rate\"\n label={t('amount')}\n format=\"currency\"\n min={0}\n errorMessage={rateErrorMessage}\n isRequired\n isDisabled={\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_NONEXEMPT ||\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_EXEMPT\n }\n />\n <SelectField\n name=\"paymentUnit\"\n label={t('paymentUnitLabel')}\n description={t('paymentUnitDescription')}\n options={paymentUnitOptions}\n errorMessage={t('validations.paymentUnit')}\n isRequired\n isDisabled={\n watchedFlsaStatus === FlsaStatus.OWNER ||\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_NONEXEMPT ||\n watchedFlsaStatus === FlsaStatus.COMMISSION_ONLY_EXEMPT\n }\n />\n {isAdjustMinimumWageEnabled && (\n <>\n <SwitchField\n name=\"adjustForMinimumWage\"\n label={t('adjustForMinimumWage')}\n description={t('adjustForMinimumWageDescription')}\n />\n {isAdjustingMinimumWage && (\n <SelectField\n name=\"minimumWageId\"\n label={t('minimumWageLabel')}\n description={t('minimumWageDescription')}\n options={minimumWages.map(wage => ({\n value: wage.uuid,\n label: `${format(Number(wage.wage))} - ${wage.authority}: ${wage.notes ?? ''}`,\n }))}\n errorMessage={t('validations.minimumWage')}\n />\n )}\n </>\n )}\n\n {showTwoPercentStakeholder && (\n <CheckboxField label={t('twoPercentStakeholderLabel')} name=\"twoPercentShareholder\" />\n )}\n {state === 'WA' && (\n <>\n <RadioGroupField\n name=\"stateWcCovered\"\n label={t('stateWcCoveredLabel')}\n description={\n <Trans\n t={t}\n i18nKey=\"stateWcCoveredDescription\"\n components={{\n wcLink: (\n <Components.Link\n href=\"https://www.lni.wa.gov/insurance/rates-risk-classes/risk-classes-for-workers-compensation/risk-class-lookup#/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n />\n ),\n }}\n />\n }\n options={[\n { label: t('stateWcCoveredOptions.yes'), value: true },\n { label: t('stateWcCoveredOptions.no'), value: false },\n ]}\n />\n {watchedStateWcCovered && (\n <ComboBoxField\n name=\"stateWcClassCode\"\n label={t('stateWcClassCodeLabel')}\n options={stateWcRiskOptions}\n errorMessage={t('validations.stateWcClassCode')}\n placeholder={t('stateWcClassCodeLabel')}\n description={t('stateWcClassCodeDescription')}\n />\n )}\n </>\n )}\n </>\n )\n}\n"],"names":["Edit","t","useTranslation","format","useNumberFormatter","Components","useComponentContext","stateWcRiskOptions","useMemo","WA_RISK_CLASS_CODES","code","description","control","register","setValue","errors","defaultValues","useFormContext","watchedFlsaStatus","useWatch","watchedStateWcCovered","isAdjustingMinimumWage","currentJob","mode","minimumWages","handleFlsaChange","state","showTwoPercentStakeholder","useCompensation","useEffect","FlsaStatus","classificationOptions","key","paymentUnitOptions","PAY_PERIODS","isFlsaSelectionEnabled","isAdjustMinimumWageEnabled","TIP_CREDITS_UNSUPPORTED_STATES","rateErrorMessage","rateMinimumError","rateExemptThresholdError","FLSA_OVERTIME_SALARY_LIMIT","jsxs","Fragment","jsx","TextInputField","SelectField","Trans","NumberInputField","SwitchField","wage","CheckboxField","RadioGroupField","ComboBoxField"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
-
import { useTranslation as
|
|
3
|
-
import { SignatureFormFields as
|
|
2
|
+
import { useTranslation as e } from "react-i18next";
|
|
3
|
+
import { SignatureFormFields as o } from "../../../Common/SignatureForm/SignatureFormFields.js";
|
|
4
4
|
function m() {
|
|
5
|
-
const { t: r } =
|
|
5
|
+
const { t: r } = e("Employee.DocumentSigner");
|
|
6
6
|
return /* @__PURE__ */ i(
|
|
7
|
-
|
|
7
|
+
o,
|
|
8
8
|
{
|
|
9
|
-
signatureLabel: "
|
|
9
|
+
signatureLabel: r("signatureFieldLabel"),
|
|
10
10
|
signatureDescription: r("signatureFieldDescription"),
|
|
11
11
|
signatureError: r("signatureFieldError"),
|
|
12
12
|
confirmationLabel: r("confirmSignatureCheckboxLabel"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.js","sources":["../../../../../src/components/Employee/DocumentSigner/SignatureForm/Form.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { SignatureFormFields } from '@/components/Common/SignatureForm'\n\nexport function Form() {\n const { t } = useTranslation('Employee.DocumentSigner')\n return (\n <SignatureFormFields\n signatureLabel
|
|
1
|
+
{"version":3,"file":"Form.js","sources":["../../../../../src/components/Employee/DocumentSigner/SignatureForm/Form.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { SignatureFormFields } from '@/components/Common/SignatureForm'\n\nexport function Form() {\n const { t } = useTranslation('Employee.DocumentSigner')\n return (\n <SignatureFormFields\n signatureLabel={t('signatureFieldLabel')}\n signatureDescription={t('signatureFieldDescription')}\n signatureError={t('signatureFieldError')}\n confirmationLabel={t('confirmSignatureCheckboxLabel')}\n confirmationError={t('confirmSignatureError')}\n />\n )\n}\n"],"names":["Form","t","useTranslation","jsx","SignatureFormFields"],"mappings":";;;AAGO,SAASA,IAAO;AACrB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,yBAAyB;AACtD,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,gBAAgBH,EAAE,qBAAqB;AAAA,MACvC,sBAAsBA,EAAE,2BAA2B;AAAA,MACnD,gBAAgBA,EAAE,qBAAqB;AAAA,MACvC,mBAAmBA,EAAE,+BAA+B;AAAA,MACpD,mBAAmBA,EAAE,uBAAuB;AAAA,IAAA;AAAA,EAAA;AAGlD;"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useTranslation as
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation as n } from "react-i18next";
|
|
3
3
|
import { useSignatureForm as i } from "./useSignatureForm.js";
|
|
4
4
|
import { DocumentViewer as m } from "../../../Common/DocumentViewer/DocumentViewer.js";
|
|
5
|
-
function
|
|
6
|
-
const { form: t, pdfUrl:
|
|
7
|
-
return /* @__PURE__ */
|
|
5
|
+
function a() {
|
|
6
|
+
const { form: t, pdfUrl: e } = i(), { t: o } = n("Employee.DocumentSigner");
|
|
7
|
+
return /* @__PURE__ */ r(
|
|
8
8
|
m,
|
|
9
9
|
{
|
|
10
|
-
url:
|
|
10
|
+
url: e,
|
|
11
11
|
title: t.title,
|
|
12
|
-
downloadInstructions: o("
|
|
12
|
+
downloadInstructions: o("downloadAndReviewInstructions"),
|
|
13
13
|
viewDocumentLabel: o("viewDocumentCta")
|
|
14
14
|
}
|
|
15
15
|
);
|
|
16
16
|
}
|
|
17
17
|
export {
|
|
18
|
-
|
|
18
|
+
a as Preview
|
|
19
19
|
};
|
|
20
20
|
//# sourceMappingURL=Preview.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Preview.js","sources":["../../../../../src/components/Employee/DocumentSigner/SignatureForm/Preview.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { useSignatureForm } from './useSignatureForm'\nimport { DocumentViewer } from '@/components/Common/DocumentViewer'\n\nexport function Preview() {\n const { form, pdfUrl } = useSignatureForm()\n const { t } = useTranslation('
|
|
1
|
+
{"version":3,"file":"Preview.js","sources":["../../../../../src/components/Employee/DocumentSigner/SignatureForm/Preview.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { useSignatureForm } from './useSignatureForm'\nimport { DocumentViewer } from '@/components/Common/DocumentViewer'\n\nexport function Preview() {\n const { form, pdfUrl } = useSignatureForm()\n const { t } = useTranslation('Employee.DocumentSigner')\n\n return (\n <DocumentViewer\n url={pdfUrl}\n title={form.title}\n downloadInstructions={t('downloadAndReviewInstructions')}\n viewDocumentLabel={t('viewDocumentCta')}\n />\n )\n}\n"],"names":["Preview","form","pdfUrl","useSignatureForm","t","useTranslation","jsx","DocumentViewer"],"mappings":";;;;AAIO,SAASA,IAAU;AACxB,QAAM,EAAE,MAAAC,GAAM,QAAAC,EAAA,IAAWC,EAAA,GACnB,EAAE,GAAAC,EAAA,IAAMC,EAAe,yBAAyB;AAEtD,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAKL;AAAA,MACL,OAAOD,EAAK;AAAA,MACZ,sBAAsBG,EAAE,+BAA+B;AAAA,MACvD,mBAAmBA,EAAE,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAG5C;"}
|