@gusto/embedded-react-sdk 0.55.8 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/components/Common/UI/Menu/MenuTypes.js.map +1 -1
  3. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js +43 -42
  4. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js.map +1 -1
  5. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +4 -3
  6. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  7. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +4 -3
  8. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  9. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +6 -5
  10. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  11. package/dist/components/Company/BankAccount/BankAccountForm/context.js +4 -3
  12. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  13. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  14. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  15. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +6 -5
  16. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  17. package/dist/components/Company/Industry/Context.js +7 -6
  18. package/dist/components/Company/Industry/Context.js.map +1 -1
  19. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +4 -3
  20. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  21. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +4 -3
  22. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  23. package/dist/components/Company/OnboardingOverview/context.js +4 -3
  24. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  25. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +4 -3
  26. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  27. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +4 -3
  28. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  29. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +4 -3
  30. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  31. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +4 -3
  32. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  33. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js +70 -69
  34. package/dist/components/Employee/EmployeeList/management/ManagementEmployeeListView.js.map +1 -1
  35. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js +2 -2
  36. package/dist/components/Employee/EmployeeList/onboarding/EmployeeListView.js.map +1 -1
  37. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js +51 -42
  38. package/dist/components/Employee/EmployeeList/shared/useEmployeeList.js.map +1 -1
  39. package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js +29 -26
  40. package/dist/components/Employee/EmployeeListFlow/employeeListStateMachine.js.map +1 -1
  41. package/dist/components/Employee/HomeAddress/management/HomeAddressView.js +2 -2
  42. package/dist/components/Employee/HomeAddress/management/HomeAddressView.js.map +1 -1
  43. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js +11 -11
  44. package/dist/components/Employee/Terminations/TerminateEmployee/TerminateEmployeePresentation.js.map +1 -1
  45. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js +3 -3
  46. package/dist/components/Employee/Terminations/TerminationSummary/TerminationSummaryPresentation.js.map +1 -1
  47. package/dist/components/Employee/WorkAddress/management/WorkAddressView.js +76 -79
  48. package/dist/components/Employee/WorkAddress/management/WorkAddressView.js.map +1 -1
  49. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js +2 -2
  50. package/dist/components/InformationRequests/InformationRequestList/InformationRequestList.js.map +1 -1
  51. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js +2 -2
  52. package/dist/components/Payroll/ConfirmWireDetails/ConfirmWireDetailsBanner/ConfirmWireDetailsBanner.js.map +1 -1
  53. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js +10 -10
  54. package/dist/components/Payroll/Dismissal/DismissalPayPeriodSelection/DismissalPayPeriodSelectionPresentation.js.map +1 -1
  55. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +49 -45
  56. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  57. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +83 -76
  58. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  59. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +63 -60
  60. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
  61. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +184 -165
  62. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  63. package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js +48 -34
  64. package/dist/components/Payroll/PayrollConfiguration/useCalculationPoll.js.map +1 -1
  65. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +185 -171
  66. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  67. package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js +45 -34
  68. package/dist/components/Payroll/PayrollOverview/useSubmissionPoll.js.map +1 -1
  69. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js +44 -44
  70. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.js.map +1 -1
  71. package/dist/components/Payroll/PayrollReceipts/PayrollReceiptsPresentation.module.scss.js +14 -14
  72. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js +16 -16
  73. package/dist/components/Payroll/PrintChecks/PrintChecksFailure/PrintChecksFailure.js.map +1 -1
  74. package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js +52 -37
  75. package/dist/components/Payroll/PrintChecks/PrintChecksForm/useGenerationPoll.js.map +1 -1
  76. package/dist/components/Payroll/usePreparedPayrollData.js +9 -8
  77. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  78. package/dist/contexts/ApiProvider/ApiProvider.js +29 -28
  79. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  80. package/dist/contexts/ApiProvider/apiVersionMismatchHook.js +15 -0
  81. package/dist/contexts/ApiProvider/apiVersionMismatchHook.js.map +1 -0
  82. package/dist/contexts/GustoProvider/GustoProviderCustomUIAdapter.js.map +1 -1
  83. package/dist/contexts/ThemeProvider/ThemeProvider.js +32 -26
  84. package/dist/contexts/ThemeProvider/ThemeProvider.js.map +1 -1
  85. package/dist/hooks/usePollingTask/usePollingTask.js +53 -41
  86. package/dist/hooks/usePollingTask/usePollingTask.js.map +1 -1
  87. package/dist/i18n/en/Employee.ManagementEmployeeList.json.js +28 -24
  88. package/dist/i18n/en/Employee.ManagementEmployeeList.json.js.map +1 -1
  89. package/dist/i18n/en/Payroll.GrossUpModal.json.js +12 -10
  90. package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -1
  91. package/dist/i18n/en/Payroll.PayrollConfiguration.json.js +8 -8
  92. package/dist/i18n/en/Payroll.PayrollOverview.json.js +15 -15
  93. package/dist/package.json.js +1 -1
  94. package/dist/src/components/Common/UI/ComboBox/ComboBoxTypes.d.ts +1 -1
  95. package/dist/src/components/Common/UI/DatePicker/DatePickerTypes.d.ts +2 -1
  96. package/dist/src/components/Common/UI/Menu/MenuTypes.d.ts +1 -1
  97. package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.d.ts +1 -1
  98. package/dist/src/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes.d.ts +5 -0
  99. package/dist/src/components/Common/UI/Select/SelectTypes.d.ts +2 -1
  100. package/dist/src/components/Employee/EmployeeList/shared/useEmployeeList.d.ts +7 -2
  101. package/dist/src/components/Employee/EmployeeListFlow/employeeListStateMachine.test.d.ts +1 -0
  102. package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
  103. package/dist/src/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +6 -0
  104. package/dist/src/components/Payroll/PayrollConfiguration/useCalculationPoll.d.ts +6 -1
  105. package/dist/src/components/Payroll/PayrollOverview/useSubmissionPoll.d.ts +10 -1
  106. package/dist/src/contexts/ApiProvider/ApiProvider.d.ts +5 -3
  107. package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.d.ts +3 -0
  108. package/dist/src/contexts/ApiProvider/apiVersionMismatchHook.test.d.ts +1 -0
  109. package/dist/src/contexts/GustoProvider/GustoProviderCustomUIAdapter.d.ts +9 -1
  110. package/dist/src/contexts/ThemeProvider/ThemeProvider.d.ts +8 -3
  111. package/dist/src/hooks/usePollingTask/usePollingTask.d.ts +55 -14
  112. package/dist/src/i18n/types.d.ts +14 -0
  113. package/dist/style.css +1 -1
  114. package/docs/guides/endpoint-inventory.json +5 -0
  115. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"GrossUpModal.js","sources":["../../../../src/components/Payroll/GrossUpModal/GrossUpModal.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { z } from 'zod'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { GrossUpModalProps } from './GrossUpModalTypes'\nimport styles from './GrossUpModal.module.scss'\nimport { ActionsLayout, Flex, NumberInputField } from '@/components/Common'\nimport { useBase } from '@/components/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { formatNumberAsCurrency } from '@/helpers/formattedStrings'\n\nconst GrossUpFormSchema = z.object({\n netPay: z.number().positive(),\n})\n\ntype GrossUpFormValues = z.infer<typeof GrossUpFormSchema>\n\n/** @internal */\nexport function GrossUpModal({ isOpen, onCalculateGrossUp, onApply, onCancel }: GrossUpModalProps) {\n useI18n('Payroll.GrossUpModal')\n const { t } = useTranslation('Payroll.GrossUpModal')\n const { Modal, Heading, Text, Button, Alert } = useComponentContext()\n const { baseSubmitHandler } = useBase()\n const modalContainerRef = useRef<HTMLDivElement>(null)\n\n const [calculatedGrossUp, setCalculatedGrossUp] = useState<string | null>(null)\n const [errorMessage, setErrorMessage] = useState<string | null>(null)\n const [isCalculating, setIsCalculating] = useState(false)\n const [isApplying, setIsApplying] = useState(false)\n\n const formHandlers = useForm<GrossUpFormValues>({\n resolver: zodResolver(GrossUpFormSchema),\n defaultValues: { netPay: 0 },\n })\n\n useEffect(() => {\n if (!isOpen) {\n formHandlers.reset({ netPay: 0 })\n setCalculatedGrossUp(null)\n setErrorMessage(null)\n }\n }, [isOpen, formHandlers.reset])\n\n const handleCalculate = async (data: GrossUpFormValues) => {\n setErrorMessage(null)\n setCalculatedGrossUp(null)\n setIsCalculating(true)\n\n await baseSubmitHandler(null, async () => {\n try {\n const result = await onCalculateGrossUp(data.netPay)\n\n if (result) {\n setCalculatedGrossUp(result)\n } else {\n setErrorMessage(t('errorMessage'))\n }\n } finally {\n setIsCalculating(false)\n }\n })\n }\n\n const handleApply = async () => {\n if (calculatedGrossUp) {\n setIsApplying(true)\n await baseSubmitHandler(null, async () => {\n try {\n await onApply(calculatedGrossUp)\n } finally {\n setIsApplying(false)\n }\n })\n }\n }\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onCancel}\n containerRef={modalContainerRef}\n footer={\n <ActionsLayout>\n <Button\n variant=\"primary\"\n isDisabled={!calculatedGrossUp}\n onClick={handleApply}\n isLoading={isApplying}\n >\n {t('applyCta')}\n </Button>\n <Button variant=\"secondary\" onClick={onCancel}>\n {t('cancelCta')}\n </Button>\n </ActionsLayout>\n }\n >\n <FormProvider {...formHandlers}>\n <div className={styles.header}>\n <Heading as=\"h2\" styledAs=\"h3\">\n {t('title')}\n </Heading>\n <Text variant=\"supporting\" as=\"p\">\n {t('description')}\n </Text>\n </div>\n\n <div className={styles.content}>\n {errorMessage && (\n <div className={styles.alert}>\n <Alert label={errorMessage} status=\"error\" disableScrollIntoView />\n </div>\n )}\n\n <div className={styles.alert}>\n <Alert label={t('warning')} status=\"warning\" disableScrollIntoView />\n </div>\n\n <Flex flexDirection=\"row\" gap={8}>\n <NumberInputField\n name=\"netPay\"\n label={t('netPayLabel')}\n format=\"currency\"\n errorMessage={t('validations.netPay')}\n min={0}\n isRequired\n />\n <Button\n variant=\"secondary\"\n className={styles.calculateButton}\n isDisabled={isCalculating}\n onClick={formHandlers.handleSubmit(handleCalculate)}\n >\n {isCalculating ? t('calculatingCta') : t('calculateCta')}\n </Button>\n </Flex>\n\n {calculatedGrossUp && (\n <>\n <div className={styles.result}>\n <Text size=\"sm\" variant=\"supporting\" weight=\"semibold\">\n {t('grossPayResult')}\n </Text>\n <Heading as=\"h3\">{formatNumberAsCurrency(parseFloat(calculatedGrossUp))}</Heading>\n </div>\n </>\n )}\n </div>\n </FormProvider>\n </Modal>\n )\n}\n"],"names":["GrossUpFormSchema","z","GrossUpModal","isOpen","onCalculateGrossUp","onApply","onCancel","useI18n","t","useTranslation","Modal","Heading","Text","Button","Alert","useComponentContext","baseSubmitHandler","useBase","modalContainerRef","useRef","calculatedGrossUp","setCalculatedGrossUp","useState","errorMessage","setErrorMessage","isCalculating","setIsCalculating","isApplying","setIsApplying","formHandlers","useForm","zodResolver","useEffect","handleCalculate","data","result","jsx","ActionsLayout","jsxs","FormProvider","styles","Flex","NumberInputField","Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaA,MAAMA,IAAoBC,EAAE,OAAO;AAAA,EACjC,QAAQA,EAAE,OAAA,EAAS,SAAA;AACrB,CAAC;AAKM,SAASC,GAAa,EAAE,QAAAC,GAAQ,oBAAAC,GAAoB,SAAAC,GAAS,UAAAC,KAA+B;AACjG,EAAAC,EAAQ,sBAAsB;AAC9B,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,sBAAsB,GAC7C,EAAE,OAAAC,GAAO,SAAAC,GAAS,MAAAC,GAAM,QAAAC,GAAQ,OAAAC,EAAA,IAAUC,EAAA,GAC1C,EAAE,mBAAAC,EAAA,IAAsBC,EAAA,GACxBC,IAAoBC,EAAuB,IAAI,GAE/C,CAACC,GAAmBC,CAAoB,IAAIC,EAAwB,IAAI,GACxE,CAACC,GAAcC,CAAe,IAAIF,EAAwB,IAAI,GAC9D,CAACG,GAAeC,CAAgB,IAAIJ,EAAS,EAAK,GAClD,CAACK,GAAYC,CAAa,IAAIN,EAAS,EAAK,GAE5CO,IAAeC,EAA2B;AAAA,IAC9C,UAAUC,EAAY/B,CAAiB;AAAA,IACvC,eAAe,EAAE,QAAQ,EAAA;AAAA,EAAE,CAC5B;AAED,EAAAgC,EAAU,MAAM;AACd,IAAK7B,MACH0B,EAAa,MAAM,EAAE,QAAQ,EAAA,CAAG,GAChCR,EAAqB,IAAI,GACzBG,EAAgB,IAAI;AAAA,EAExB,GAAG,CAACrB,GAAQ0B,EAAa,KAAK,CAAC;AAE/B,QAAMI,IAAkB,OAAOC,MAA4B;AACzD,IAAAV,EAAgB,IAAI,GACpBH,EAAqB,IAAI,GACzBK,EAAiB,EAAI,GAErB,MAAMV,EAAkB,MAAM,YAAY;AACxC,UAAI;AACF,cAAMmB,IAAS,MAAM/B,EAAmB8B,EAAK,MAAM;AAEnD,QAAIC,IACFd,EAAqBc,CAAM,IAE3BX,EAAgBhB,EAAE,cAAc,CAAC;AAAA,MAErC,UAAA;AACE,QAAAkB,EAAiB,EAAK;AAAA,MACxB;AAAA,IACF,CAAC;AAAA,EACH;AAeA,SACE,gBAAAU;AAAA,IAAC1B;AAAA,IAAA;AAAA,MACC,QAAAP;AAAA,MACA,SAASG;AAAA,MACT,cAAcY;AAAA,MACd,0BACGmB,GAAA,EACC,UAAA;AAAA,QAAA,gBAAAD;AAAA,UAACvB;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,YAAY,CAACO;AAAA,YACb,SAvBU,YAAY;AAC9B,cAAIA,MACFQ,EAAc,EAAI,GAClB,MAAMZ,EAAkB,MAAM,YAAY;AACxC,oBAAI;AACF,wBAAMX,EAAQe,CAAiB;AAAA,gBACjC,UAAA;AACE,kBAAAQ,EAAc,EAAK;AAAA,gBACrB;AAAA,cACF,CAAC;AAAA,YAEL;AAAA,YAaU,WAAWD;AAAA,YAEV,YAAE,UAAU;AAAA,UAAA;AAAA,QAAA;AAAA,QAEf,gBAAAS,EAACvB,KAAO,SAAQ,aAAY,SAASP,GAClC,UAAAE,EAAE,WAAW,EAAA,CAChB;AAAA,MAAA,GACF;AAAA,MAGF,UAAA,gBAAA8B,EAACC,GAAA,EAAc,GAAGV,GAChB,UAAA;AAAA,QAAA,gBAAAS,EAAC,OAAA,EAAI,WAAWE,EAAO,QACrB,UAAA;AAAA,UAAA,gBAAAJ,EAACzB,KAAQ,IAAG,MAAK,UAAS,MACvB,UAAAH,EAAE,OAAO,GACZ;AAAA,UACA,gBAAA4B,EAACxB,KAAK,SAAQ,cAAa,IAAG,KAC3B,UAAAJ,EAAE,aAAa,EAAA,CAClB;AAAA,QAAA,GACF;AAAA,QAEA,gBAAA8B,EAAC,OAAA,EAAI,WAAWE,EAAO,SACpB,UAAA;AAAA,UAAAjB,KACC,gBAAAa,EAAC,OAAA,EAAI,WAAWI,EAAO,OACrB,UAAA,gBAAAJ,EAACtB,GAAA,EAAM,OAAOS,GAAc,QAAO,SAAQ,uBAAqB,IAAC,GACnE;AAAA,UAGF,gBAAAa,EAAC,OAAA,EAAI,WAAWI,EAAO,OACrB,UAAA,gBAAAJ,EAACtB,GAAA,EAAM,OAAON,EAAE,SAAS,GAAG,QAAO,WAAU,uBAAqB,IAAC,GACrE;AAAA,UAEA,gBAAA8B,EAACG,GAAA,EAAK,eAAc,OAAM,KAAK,GAC7B,UAAA;AAAA,YAAA,gBAAAL;AAAA,cAACM;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAOlC,EAAE,aAAa;AAAA,gBACtB,QAAO;AAAA,gBACP,cAAcA,EAAE,oBAAoB;AAAA,gBACpC,KAAK;AAAA,gBACL,YAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAEZ,gBAAA4B;AAAA,cAACvB;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,WAAW2B,EAAO;AAAA,gBAClB,YAAYf;AAAA,gBACZ,SAASI,EAAa,aAAaI,CAAe;AAAA,gBAEjD,UAAgBzB,EAAhBiB,IAAkB,mBAAsB,cAAN;AAAA,cAAoB;AAAA,YAAA;AAAA,UACzD,GACF;AAAA,UAECL,KACC,gBAAAgB,EAAAO,GAAA,EACE,UAAA,gBAAAL,EAAC,OAAA,EAAI,WAAWE,EAAO,QACrB,UAAA;AAAA,YAAA,gBAAAJ,EAACxB,GAAA,EAAK,MAAK,MAAK,SAAQ,cAAa,QAAO,YACzC,UAAAJ,EAAE,gBAAgB,EAAA,CACrB;AAAA,YACA,gBAAA4B,EAACzB,KAAQ,IAAG,MAAM,YAAuB,WAAWS,CAAiB,CAAC,EAAA,CAAE;AAAA,UAAA,EAAA,CAC1E,EAAA,CACF;AAAA,QAAA,EAAA,CAEJ;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"GrossUpModal.js","sources":["../../../../src/components/Payroll/GrossUpModal/GrossUpModal.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\nimport { z } from 'zod'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport type { GrossUpModalProps } from './GrossUpModalTypes'\nimport styles from './GrossUpModal.module.scss'\nimport { ActionsLayout, Flex, NumberInputField } from '@/components/Common'\nimport { useBase } from '@/components/Base'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useI18n } from '@/i18n'\nimport { formatNumberAsCurrency } from '@/helpers/formattedStrings'\n\nconst GrossUpFormSchema = z.object({\n netPay: z.number().positive(),\n})\n\ntype GrossUpFormValues = z.infer<typeof GrossUpFormSchema>\n\n/** @internal */\nexport function GrossUpModal({ isOpen, onCalculateGrossUp, onApply, onCancel }: GrossUpModalProps) {\n useI18n('Payroll.GrossUpModal')\n const { t } = useTranslation('Payroll.GrossUpModal')\n const { Modal, Heading, Text, Button, Alert } = useComponentContext()\n const { baseSubmitHandler } = useBase()\n const modalContainerRef = useRef<HTMLDivElement>(null)\n\n const [calculatedGrossUp, setCalculatedGrossUp] = useState<string | null>(null)\n const [errorMessage, setErrorMessage] = useState<string | null>(null)\n const [isCalculating, setIsCalculating] = useState(false)\n const [isApplying, setIsApplying] = useState(false)\n\n const formHandlers = useForm<GrossUpFormValues>({\n resolver: zodResolver(GrossUpFormSchema),\n // Start blank rather than 0: 0 is not a valid net amount, and a leading 0\n // in the field means typing an amount produces values like \"0350\".\n defaultValues: {},\n })\n\n useEffect(() => {\n if (!isOpen) {\n formHandlers.reset()\n setCalculatedGrossUp(null)\n setErrorMessage(null)\n }\n }, [isOpen, formHandlers.reset])\n\n const handleCalculate = async (data: GrossUpFormValues) => {\n setErrorMessage(null)\n setCalculatedGrossUp(null)\n setIsCalculating(true)\n\n await baseSubmitHandler(null, async () => {\n try {\n const result = await onCalculateGrossUp(data.netPay)\n\n if (result) {\n setCalculatedGrossUp(result)\n } else {\n setErrorMessage(t('errorMessage'))\n }\n } finally {\n setIsCalculating(false)\n }\n })\n }\n\n const handleApply = async () => {\n if (calculatedGrossUp) {\n setIsApplying(true)\n await baseSubmitHandler(null, async () => {\n try {\n await onApply(calculatedGrossUp)\n } finally {\n setIsApplying(false)\n }\n })\n }\n }\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onCancel}\n containerRef={modalContainerRef}\n footer={\n <ActionsLayout>\n <Button\n variant=\"primary\"\n isDisabled={!calculatedGrossUp}\n onClick={handleApply}\n isLoading={isApplying}\n >\n {t('applyCta')}\n </Button>\n <Button variant=\"secondary\" onClick={onCancel}>\n {t('cancelCta')}\n </Button>\n </ActionsLayout>\n }\n >\n <FormProvider {...formHandlers}>\n <div className={styles.header}>\n <Heading as=\"h2\" styledAs=\"h3\">\n {t('title')}\n </Heading>\n <Text variant=\"supporting\" as=\"p\">\n {t('description')}\n </Text>\n </div>\n\n <div className={styles.content}>\n {errorMessage && (\n <div className={styles.alert}>\n <Alert label={errorMessage} status=\"error\" disableScrollIntoView />\n </div>\n )}\n\n <div className={styles.alert}>\n <Alert label={t('warning')} status=\"warning\" disableScrollIntoView />\n </div>\n\n {/* Bottom-align on the row itself: the .calculateButton align-self\n rule below only targets the default (react-aria) adapter, so in\n other adapters the button otherwise falls back to flex-start. */}\n <Flex flexDirection=\"row\" gap={8} alignItems=\"flex-end\">\n <NumberInputField\n name=\"netPay\"\n label={t('netPayLabel')}\n format=\"currency\"\n adornmentStart=\"$\"\n errorMessage={t('validations.netPay')}\n min={0}\n isRequired\n />\n <Button\n variant=\"secondary\"\n className={styles.calculateButton}\n isDisabled={isCalculating}\n onClick={formHandlers.handleSubmit(handleCalculate)}\n >\n {isCalculating ? t('calculatingCta') : t('calculateCta')}\n </Button>\n </Flex>\n\n {calculatedGrossUp ? (\n <div className={styles.result}>\n <Text size=\"sm\" variant=\"supporting\" weight=\"semibold\">\n {t('grossPayResult')}\n </Text>\n <Heading as=\"h3\">{formatNumberAsCurrency(parseFloat(calculatedGrossUp))}</Heading>\n </div>\n ) : (\n <Text size=\"sm\" variant=\"supporting\">\n {t('applyHint')}\n </Text>\n )}\n </div>\n </FormProvider>\n </Modal>\n )\n}\n"],"names":["GrossUpFormSchema","z","GrossUpModal","isOpen","onCalculateGrossUp","onApply","onCancel","useI18n","t","useTranslation","Modal","Heading","Text","Button","Alert","useComponentContext","baseSubmitHandler","useBase","modalContainerRef","useRef","calculatedGrossUp","setCalculatedGrossUp","useState","errorMessage","setErrorMessage","isCalculating","setIsCalculating","isApplying","setIsApplying","formHandlers","useForm","zodResolver","useEffect","handleCalculate","data","result","jsx","ActionsLayout","jsxs","FormProvider","styles","Flex","NumberInputField"],"mappings":"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"}
@@ -1,46 +1,52 @@
1
1
  import { jsx as c } from "react/jsx-runtime";
2
- import { useState as x, useCallback as P, useMemo as Y, useEffect as H } from "react";
3
- import { useForm as J, FormProvider as K } from "react-hook-form";
4
- import { zodResolver as Z } from "@hookform/resolvers/zod";
2
+ import { useState as x, useCallback as g, useMemo as H, useEffect as J } from "react";
3
+ import { useForm as K, FormProvider as Z } from "react-hook-form";
4
+ import { zodResolver as Q } from "@hookform/resolvers/zod";
5
5
  import { z as l } from "zod";
6
6
  import { useTranslation as T } from "react-i18next";
7
- import { usePayrollsCreateOffCycleMutation as G } from "@gusto/embedded-api/react-query/payrollsCreateOffCycle";
8
- import { WithholdingPayPeriod as Q, OffCycleReason as W } from "@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls";
9
- import { RFCDate as g } from "@gusto/embedded-api/types/rfcdate";
10
- import { useEmployeesListSuspense as X } from "@gusto/embedded-api/react-query/employeesList";
11
- import { createOffCyclePayPeriodDateFormSchema as $ } from "../OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormTypes.js";
12
- import { useOffCyclePayPeriodDateValidation as ee } from "../OffCyclePayPeriodDateForm/useOffCyclePayPeriodDateValidation.js";
13
- import { OffCycleCreationPresentation as oe } from "./OffCycleCreationPresentation.js";
14
- import { useCompanyPaymentSpeed as te } from "../../../hooks/useCompanyPaymentSpeed.js";
15
- import { BaseComponent as ne } from "../../Base/Base.js";
16
- import { useBase as ie } from "../../Base/useBase.js";
17
- import { useComponentDictionary as le, useI18n as a } from "../../../i18n/I18n.js";
18
- import { componentEvents as se } from "../../../shared/constants.js";
19
- import { SDKInternalError as re } from "../../../types/sdkError.js";
20
- import { Form as ae } from "../../Common/Form/Form.js";
21
- import { OFF_CYCLE_REASON_DEFAULTS as u } from "../OffCycleReasonSelection/types.js";
22
- const ce = {
23
- bonus: W.Bonus,
24
- correction: W.Correction
7
+ import { usePayrollsCreateOffCycleMutation as X } from "@gusto/embedded-api/react-query/payrollsCreateOffCycle";
8
+ import { usePayrollsGetBlockersSuspense as $ } from "@gusto/embedded-api/react-query/payrollsGetBlockers";
9
+ import { WithholdingPayPeriod as ee, OffCycleReason as U } from "@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls";
10
+ import { RFCDate as P } from "@gusto/embedded-api/types/rfcdate";
11
+ import { useEmployeesListSuspense as oe } from "@gusto/embedded-api/react-query/employeesList";
12
+ import { createOffCyclePayPeriodDateFormSchema as te } from "../OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormTypes.js";
13
+ import { useOffCyclePayPeriodDateValidation as ne } from "../OffCyclePayPeriodDateForm/useOffCyclePayPeriodDateValidation.js";
14
+ import { OffCycleCreationPresentation as se } from "./OffCycleCreationPresentation.js";
15
+ import { useCompanyPaymentSpeed as le } from "../../../hooks/useCompanyPaymentSpeed.js";
16
+ import { BaseComponent as ie } from "../../Base/Base.js";
17
+ import { useBase as re } from "../../Base/useBase.js";
18
+ import { useComponentDictionary as ae, useI18n as a } from "../../../i18n/I18n.js";
19
+ import { componentEvents as ce } from "../../../shared/constants.js";
20
+ import { SDKInternalError as me } from "../../../types/sdkError.js";
21
+ import { Form as de } from "../../Common/Form/Form.js";
22
+ import { OFF_CYCLE_REASON_DEFAULTS as y } from "../OffCycleReasonSelection/types.js";
23
+ const ue = {
24
+ bonus: U.Bonus,
25
+ correction: U.Correction
25
26
  };
26
- function Fe(m) {
27
- return /* @__PURE__ */ c(ne, { ...m, children: /* @__PURE__ */ c(me, { ...m }) });
27
+ function Me(m) {
28
+ return /* @__PURE__ */ c(ie, { ...m, children: /* @__PURE__ */ c(ye, { ...m }) });
28
29
  }
29
- function me({ dictionary: m, companyId: f, payrollType: y = "bonus", className: v }) {
30
- le("Payroll.OffCycleCreation", m), a("Payroll.OffCycleCreation"), a("Payroll.OffCycleReasonSelection"), a("Payroll.OffCyclePayPeriodDateForm"), a("Payroll.OffCycleDeductionsSetting"), a("Payroll.EmployeeSelection");
31
- const { t: A } = T("Payroll.OffCyclePayPeriodDateForm"), { t: O } = T("Payroll.OffCycleCreation"), { onEvent: F, baseSubmitHandler: U } = ie(), { paymentSpeedDays: E } = te(f), { minCheckDate: k, maxDate: N, minPayPeriodDate: L, today: R } = ee(E), { mutateAsync: M, isPending: _ } = G(), [h, w] = x({
32
- withholdingPayPeriod: Q.EveryOtherWeek,
33
- withholdingRate: u[y].withholdingType
34
- }), [j, p] = x(!1), B = P(() => {
35
- p(!0);
36
- }, []), I = P((e) => {
37
- w(e), p(!1);
38
- }, []), V = P(() => {
39
- p(!1);
40
- }, []), { data: S } = X({
41
- companyId: f,
30
+ function ye({ dictionary: m, companyId: d, payrollType: f = "bonus", className: W }) {
31
+ ae("Payroll.OffCycleCreation", m), a("Payroll.OffCycleCreation"), a("Payroll.OffCycleReasonSelection"), a("Payroll.OffCyclePayPeriodDateForm"), a("Payroll.OffCycleDeductionsSetting"), a("Payroll.EmployeeSelection");
32
+ const { t: v } = T("Payroll.OffCyclePayPeriodDateForm"), { t: O } = T("Payroll.OffCycleCreation"), { onEvent: A, baseSubmitHandler: F } = re(), { paymentSpeedDays: E } = le(d), { minCheckDate: k, maxDate: N, minPayPeriodDate: L, today: R } = ne(E), { mutateAsync: M, isPending: _ } = X(), [p, S] = x({
33
+ withholdingPayPeriod: ee.EveryOtherWeek,
34
+ withholdingRate: y[f].withholdingType
35
+ }), [B, h] = x(!1), j = g(() => {
36
+ h(!0);
37
+ }, []), I = g((e) => {
38
+ S(e), h(!1);
39
+ }, []), V = g(() => {
40
+ h(!1);
41
+ }, []), { data: w } = oe({
42
+ companyId: d,
42
43
  onboardedActive: !0
43
- }), b = Y(() => [...S.showEmployees ?? []].sort((o, t) => {
44
+ }), { data: q } = $({
45
+ companyUuid: d
46
+ }), z = (q.payrollBlockers ?? []).map((e) => ({
47
+ key: e.key,
48
+ message: e.message
49
+ })), b = H(() => [...w.showEmployees ?? []].sort((o, t) => {
44
50
  const n = o.lastName.localeCompare(t.lastName);
45
51
  return n !== 0 ? n : o.firstName.localeCompare(t.firstName);
46
52
  }).map((o) => {
@@ -50,13 +56,13 @@ function me({ dictionary: m, companyId: f, payrollType: y = "bonus", className:
50
56
  value: o.uuid,
51
57
  description: n?.title || void 0
52
58
  };
53
- }), [S]), q = (e, o) => (
59
+ }), [w]), Y = (e, o) => (
54
60
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
- A(e, o)
56
- ), s = J({
61
+ v(e, o)
62
+ ), i = K({
57
63
  resolver: (e, o, t) => {
58
- const n = e.isCheckOnly, r = $(
59
- q,
64
+ const n = e.isCheckOnly, r = te(
65
+ Y,
60
66
  n ? R : k,
61
67
  E
62
68
  ), D = l.object({
@@ -64,79 +70,80 @@ function me({ dictionary: m, companyId: f, payrollType: y = "bonus", className:
64
70
  skipRegularDeductions: l.boolean(),
65
71
  includeAllEmployees: l.boolean(),
66
72
  selectedEmployeeUuids: l.array(l.string())
67
- }).and(r).superRefine((i, d) => {
68
- !i.includeAllEmployees && i.selectedEmployeeUuids.length === 0 && d.addIssue({
73
+ }).and(r).superRefine((s, u) => {
74
+ !s.includeAllEmployees && s.selectedEmployeeUuids.length === 0 && u.addIssue({
69
75
  code: l.ZodIssueCode.custom,
70
76
  path: ["selectedEmployeeUuids"],
71
77
  message: O("errors.noEmployeesSelected")
72
78
  });
73
79
  });
74
- return Z(D)(e, o, t);
80
+ return Q(D)(e, o, t);
75
81
  },
76
82
  defaultValues: {
77
- reason: y,
83
+ reason: f,
78
84
  isCheckOnly: !1,
79
85
  startDate: null,
80
86
  endDate: null,
81
87
  checkDate: null,
82
- skipRegularDeductions: u[y].skipDeductions,
88
+ skipRegularDeductions: y[f].skipDeductions,
83
89
  includeAllEmployees: !1,
84
90
  selectedEmployeeUuids: []
85
91
  }
86
- }), C = s.watch("reason");
87
- H(() => {
88
- s.setValue(
92
+ }), C = i.watch("reason");
93
+ J(() => {
94
+ i.setValue(
89
95
  "skipRegularDeductions",
90
- u[C].skipDeductions
91
- ), w((e) => ({
96
+ y[C].skipDeductions
97
+ ), S((e) => ({
92
98
  ...e,
93
- withholdingRate: u[C].withholdingType
99
+ withholdingRate: y[C].withholdingType
94
100
  }));
95
- }, [C, s]);
96
- const z = async (e) => {
97
- const o = e.reason, t = e.checkDate, n = e.startDate, r = e.endDate, D = e.includeAllEmployees ? b.map((i) => i.value) : e.selectedEmployeeUuids.length > 0 ? e.selectedEmployeeUuids : void 0;
98
- await U(e, async () => {
99
- const i = await M({
101
+ }, [C, i]);
102
+ const G = async (e) => {
103
+ const o = e.reason, t = e.checkDate, n = e.startDate, r = e.endDate, D = e.includeAllEmployees ? b.map((s) => s.value) : e.selectedEmployeeUuids.length > 0 ? e.selectedEmployeeUuids : void 0;
104
+ await F(e, async () => {
105
+ const s = await M({
100
106
  request: {
101
- companyId: f,
107
+ companyId: d,
102
108
  requestBody: {
103
109
  offCycle: !0,
104
- offCycleReason: ce[o],
105
- startDate: new g(n),
106
- endDate: new g(r),
107
- checkDate: new g(t),
110
+ offCycleReason: ue[o],
111
+ startDate: new P(n),
112
+ endDate: new P(r),
113
+ checkDate: new P(t),
108
114
  skipRegularDeductions: e.skipRegularDeductions,
109
115
  isCheckOnlyPayroll: e.isCheckOnly,
110
116
  employeeUuids: D,
111
- withholdingPayPeriod: h.withholdingPayPeriod,
112
- fixedWithholdingRate: h.withholdingRate === "supplemental"
117
+ withholdingPayPeriod: p.withholdingPayPeriod,
118
+ fixedWithholdingRate: p.withholdingRate === "supplemental"
113
119
  }
114
120
  }
115
- }), d = i.payrollUnprocessed?.payrollUuid ?? i.payrollUnprocessed?.uuid;
116
- if (!d)
117
- throw new re(O("errors.missingPayrollId"));
118
- F(se.OFF_CYCLE_CREATED, { payrollUuid: d });
121
+ }), u = s.payrollUnprocessed?.payrollUuid ?? s.payrollUnprocessed?.uuid;
122
+ if (!u)
123
+ throw new me(O("errors.missingPayrollId"));
124
+ A(ce.OFF_CYCLE_CREATED, { payrollUuid: u });
119
125
  });
120
126
  };
121
- return /* @__PURE__ */ c(K, { ...s, children: /* @__PURE__ */ c(ae, { onSubmit: s.handleSubmit(z), children: /* @__PURE__ */ c(
122
- oe,
127
+ return /* @__PURE__ */ c(Z, { ...i, children: /* @__PURE__ */ c(de, { onSubmit: i.handleSubmit(G), children: /* @__PURE__ */ c(
128
+ se,
123
129
  {
124
130
  employees: b,
131
+ blockers: z,
125
132
  isPending: _,
126
133
  minCheckDate: k,
127
134
  minCheckOnlyDate: R,
128
135
  maxDate: N,
129
136
  minPayPeriodDate: L,
130
- taxWithholdingConfig: h,
131
- isTaxWithholdingModalOpen: j,
132
- onTaxWithholdingEditClick: B,
137
+ taxWithholdingConfig: p,
138
+ isTaxWithholdingModalOpen: B,
139
+ onTaxWithholdingEditClick: j,
133
140
  onTaxWithholdingModalDone: I,
134
141
  onTaxWithholdingModalCancel: V,
135
- className: v
142
+ className: W
136
143
  }
137
144
  ) }) });
138
145
  }
139
146
  export {
140
- Fe as OffCycleCreation
147
+ Me as OffCycleCreation
141
148
  };
142
149
  //# sourceMappingURL=OffCycleCreation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OffCycleCreation.js","sources":["../../../../src/components/Payroll/OffCycleCreation/OffCycleCreation.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm, type Resolver } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\nimport { useTranslation } from 'react-i18next'\nimport { usePayrollsCreateOffCycleMutation } from '@gusto/embedded-api/react-query/payrollsCreateOffCycle'\nimport {\n OffCycleReason as ApiOffCycleReason,\n WithholdingPayPeriod,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport { OFF_CYCLE_REASON_DEFAULTS, type OffCycleReason } from '../OffCycleReasonSelection'\nimport { createOffCyclePayPeriodDateFormSchema } from '../OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormTypes'\nimport { useOffCyclePayPeriodDateValidation } from '../OffCyclePayPeriodDateForm/useOffCyclePayPeriodDateValidation'\nimport type { OffCycleTaxWithholdingConfig } from '../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes'\nimport type { OffCycleCreationFormData, OffCycleCreationProps } from './OffCycleCreationTypes'\nimport { OffCycleCreationPresentation } from './OffCycleCreationPresentation'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { Form } from '@/components/Common/Form'\nimport type { MultiSelectComboBoxOption } from '@/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes'\n\nconst LOCAL_TO_API_REASON: Record<OffCycleReason, ApiOffCycleReason> = {\n bonus: ApiOffCycleReason.Bonus,\n correction: ApiOffCycleReason.Correction,\n}\n\n/**\n * Creation form for off-cycle (bonus or correction) payrolls.\n *\n * Walks the user through configuring pay period dates, selecting a reason, choosing\n * employees, and setting deduction and tax withholding preferences, then submits the\n * resulting payroll for execution.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `offCycle/created` | The off-cycle payroll has been created | `{ payrollUuid: string }` |\n *\n * Changing the reason updates the deduction and withholding defaults — `'bonus'` skips\n * regular deductions and uses the supplemental withholding rate; `'correction'` includes\n * regular deductions and uses the regular rate.\n *\n * @param props - {@link OffCycleCreationProps} plus base component props.\n * @returns The off-cycle payroll creation form.\n * @public\n */\nexport function OffCycleCreation(props: OffCycleCreationProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nfunction Root({ dictionary, companyId, payrollType = 'bonus', className }: OffCycleCreationProps) {\n useComponentDictionary('Payroll.OffCycleCreation', dictionary)\n useI18n('Payroll.OffCycleCreation')\n useI18n('Payroll.OffCycleReasonSelection')\n useI18n('Payroll.OffCyclePayPeriodDateForm')\n useI18n('Payroll.OffCycleDeductionsSetting')\n useI18n('Payroll.EmployeeSelection')\n\n const { t } = useTranslation('Payroll.OffCyclePayPeriodDateForm')\n const { t: tCreation } = useTranslation('Payroll.OffCycleCreation')\n const { onEvent, baseSubmitHandler } = useBase()\n\n const { paymentSpeedDays } = useCompanyPaymentSpeed(companyId)\n\n const { minCheckDate, maxDate, minPayPeriodDate, today } =\n useOffCyclePayPeriodDateValidation(paymentSpeedDays)\n const { mutateAsync: createOffCyclePayroll, isPending } = usePayrollsCreateOffCycleMutation()\n\n const [taxWithholdingConfig, setTaxWithholdingConfig] = useState<OffCycleTaxWithholdingConfig>({\n withholdingPayPeriod: WithholdingPayPeriod.EveryOtherWeek,\n withholdingRate: OFF_CYCLE_REASON_DEFAULTS[payrollType].withholdingType,\n })\n const [isTaxWithholdingModalOpen, setIsTaxWithholdingModalOpen] = useState(false)\n\n const handleTaxWithholdingEditClick = useCallback(() => {\n setIsTaxWithholdingModalOpen(true)\n }, [])\n\n const handleTaxWithholdingModalDone = useCallback((config: OffCycleTaxWithholdingConfig) => {\n setTaxWithholdingConfig(config)\n setIsTaxWithholdingModalOpen(false)\n }, [])\n\n const handleTaxWithholdingModalCancel = useCallback(() => {\n setIsTaxWithholdingModalOpen(false)\n }, [])\n\n const { data: employeesData } = useEmployeesListSuspense({\n companyId,\n onboardedActive: true,\n })\n\n const employees: MultiSelectComboBoxOption[] = useMemo(() => {\n const employeeList = employeesData.showEmployees ?? []\n return [...employeeList]\n .sort((a, b) => {\n const lastNameComparison = a.lastName.localeCompare(b.lastName)\n if (lastNameComparison !== 0) return lastNameComparison\n return a.firstName.localeCompare(b.firstName)\n })\n .map(employee => {\n const fullName = [employee.firstName, employee.lastName].filter(Boolean).join(' ')\n const primaryJob = employee.jobs?.find(job => job.primary) ?? employee.jobs?.[0]\n return {\n label: fullName,\n value: employee.uuid,\n description: primaryJob?.title || undefined,\n }\n })\n }, [employeesData])\n\n const translateValidation = (key: string, options?: Record<string, unknown>): string =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t(key as any, options as any) as string\n\n const dynamicResolver: Resolver<OffCycleCreationFormData> = (values, context, options) => {\n const isCheckOnly = values.isCheckOnly\n\n const dateSchema = createOffCyclePayPeriodDateFormSchema(\n translateValidation,\n isCheckOnly ? today : minCheckDate,\n paymentSpeedDays,\n )\n const schema = z\n .object({\n reason: z.enum(['bonus', 'correction']),\n skipRegularDeductions: z.boolean(),\n includeAllEmployees: z.boolean(),\n selectedEmployeeUuids: z.array(z.string()),\n })\n .and(dateSchema)\n .superRefine((data, ctx) => {\n if (!data.includeAllEmployees && data.selectedEmployeeUuids.length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['selectedEmployeeUuids'],\n message: tCreation('errors.noEmployeesSelected'),\n })\n }\n })\n\n return zodResolver(schema)(values, context, options)\n }\n\n const methods = useForm<OffCycleCreationFormData>({\n resolver: dynamicResolver,\n defaultValues: {\n reason: payrollType,\n isCheckOnly: false,\n startDate: null,\n endDate: null,\n checkDate: null,\n skipRegularDeductions: OFF_CYCLE_REASON_DEFAULTS[payrollType].skipDeductions,\n includeAllEmployees: false,\n selectedEmployeeUuids: [],\n },\n })\n\n const watchedReason = methods.watch('reason')\n\n useEffect(() => {\n methods.setValue(\n 'skipRegularDeductions',\n OFF_CYCLE_REASON_DEFAULTS[watchedReason].skipDeductions,\n )\n setTaxWithholdingConfig(prev => ({\n ...prev,\n withholdingRate: OFF_CYCLE_REASON_DEFAULTS[watchedReason].withholdingType,\n }))\n }, [watchedReason, methods])\n\n const onSubmit = async (data: OffCycleCreationFormData) => {\n const reason = data.reason\n const checkDate = data.checkDate!\n const startDate = data.startDate!\n const endDate = data.endDate!\n const employeeUuids = data.includeAllEmployees\n ? employees.map(e => e.value)\n : data.selectedEmployeeUuids.length > 0\n ? data.selectedEmployeeUuids\n : undefined\n\n await baseSubmitHandler(data, async () => {\n const response = await createOffCyclePayroll({\n request: {\n companyId,\n requestBody: {\n offCycle: true,\n offCycleReason: LOCAL_TO_API_REASON[reason],\n startDate: new RFCDate(startDate),\n endDate: new RFCDate(endDate),\n checkDate: new RFCDate(checkDate),\n skipRegularDeductions: data.skipRegularDeductions,\n isCheckOnlyPayroll: data.isCheckOnly,\n employeeUuids,\n withholdingPayPeriod: taxWithholdingConfig.withholdingPayPeriod,\n fixedWithholdingRate: taxWithholdingConfig.withholdingRate === 'supplemental',\n },\n },\n })\n\n const payrollUuid =\n response.payrollUnprocessed?.payrollUuid ?? response.payrollUnprocessed?.uuid\n\n if (!payrollUuid) {\n throw new SDKInternalError(tCreation('errors.missingPayrollId'))\n }\n\n onEvent(componentEvents.OFF_CYCLE_CREATED, { payrollUuid })\n })\n }\n\n return (\n <FormProvider {...methods}>\n <Form onSubmit={methods.handleSubmit(onSubmit)}>\n <OffCycleCreationPresentation\n employees={employees}\n isPending={isPending}\n minCheckDate={minCheckDate}\n minCheckOnlyDate={today}\n maxDate={maxDate}\n minPayPeriodDate={minPayPeriodDate}\n taxWithholdingConfig={taxWithholdingConfig}\n isTaxWithholdingModalOpen={isTaxWithholdingModalOpen}\n onTaxWithholdingEditClick={handleTaxWithholdingEditClick}\n onTaxWithholdingModalDone={handleTaxWithholdingModalDone}\n onTaxWithholdingModalCancel={handleTaxWithholdingModalCancel}\n className={className}\n />\n </Form>\n </FormProvider>\n )\n}\n"],"names":["LOCAL_TO_API_REASON","ApiOffCycleReason","OffCycleCreation","props","jsx","BaseComponent","Root","dictionary","companyId","payrollType","className","useComponentDictionary","useI18n","t","useTranslation","tCreation","onEvent","baseSubmitHandler","useBase","paymentSpeedDays","useCompanyPaymentSpeed","minCheckDate","maxDate","minPayPeriodDate","today","useOffCyclePayPeriodDateValidation","createOffCyclePayroll","isPending","usePayrollsCreateOffCycleMutation","taxWithholdingConfig","setTaxWithholdingConfig","useState","WithholdingPayPeriod","OFF_CYCLE_REASON_DEFAULTS","isTaxWithholdingModalOpen","setIsTaxWithholdingModalOpen","handleTaxWithholdingEditClick","useCallback","handleTaxWithholdingModalDone","config","handleTaxWithholdingModalCancel","employeesData","useEmployeesListSuspense","employees","useMemo","a","b","lastNameComparison","employee","fullName","primaryJob","job","translateValidation","key","options","methods","useForm","values","context","isCheckOnly","dateSchema","createOffCyclePayPeriodDateFormSchema","schema","z","data","ctx","zodResolver","watchedReason","useEffect","prev","onSubmit","reason","checkDate","startDate","endDate","employeeUuids","e","response","RFCDate","payrollUuid","SDKInternalError","componentEvents","FormProvider","Form","OffCycleCreationPresentation"],"mappings":"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"}
1
+ {"version":3,"file":"OffCycleCreation.js","sources":["../../../../src/components/Payroll/OffCycleCreation/OffCycleCreation.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm, type Resolver } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\nimport { useTranslation } from 'react-i18next'\nimport { usePayrollsCreateOffCycleMutation } from '@gusto/embedded-api/react-query/payrollsCreateOffCycle'\nimport { usePayrollsGetBlockersSuspense } from '@gusto/embedded-api/react-query/payrollsGetBlockers'\nimport {\n OffCycleReason as ApiOffCycleReason,\n WithholdingPayPeriod,\n} from '@gusto/embedded-api/models/operations/postv1companiescompanyidpayrolls'\nimport { RFCDate } from '@gusto/embedded-api/types/rfcdate'\nimport { useEmployeesListSuspense } from '@gusto/embedded-api/react-query/employeesList'\nimport { OFF_CYCLE_REASON_DEFAULTS, type OffCycleReason } from '../OffCycleReasonSelection'\nimport type { ApiPayrollBlocker } from '../PayrollBlocker/payrollHelpers'\nimport { createOffCyclePayPeriodDateFormSchema } from '../OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormTypes'\nimport { useOffCyclePayPeriodDateValidation } from '../OffCyclePayPeriodDateForm/useOffCyclePayPeriodDateValidation'\nimport type { OffCycleTaxWithholdingConfig } from '../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes'\nimport type { OffCycleCreationFormData, OffCycleCreationProps } from './OffCycleCreationTypes'\nimport { OffCycleCreationPresentation } from './OffCycleCreationPresentation'\nimport { useCompanyPaymentSpeed } from '@/hooks/useCompanyPaymentSpeed'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useBase } from '@/components/Base/useBase'\nimport { useComponentDictionary, useI18n } from '@/i18n'\nimport { componentEvents } from '@/shared/constants'\nimport { SDKInternalError } from '@/types/sdkError'\nimport { Form } from '@/components/Common/Form'\nimport type { MultiSelectComboBoxOption } from '@/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes'\n\nconst LOCAL_TO_API_REASON: Record<OffCycleReason, ApiOffCycleReason> = {\n bonus: ApiOffCycleReason.Bonus,\n correction: ApiOffCycleReason.Correction,\n}\n\n/**\n * Creation form for off-cycle (bonus or correction) payrolls.\n *\n * Walks the user through configuring pay period dates, selecting a reason, choosing\n * employees, and setting deduction and tax withholding preferences, then submits the\n * resulting payroll for execution.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `offCycle/created` | The off-cycle payroll has been created | `{ payrollUuid: string }` |\n *\n * Changing the reason updates the deduction and withholding defaults — `'bonus'` skips\n * regular deductions and uses the supplemental withholding rate; `'correction'` includes\n * regular deductions and uses the regular rate.\n *\n * @param props - {@link OffCycleCreationProps} plus base component props.\n * @returns The off-cycle payroll creation form.\n * @public\n */\nexport function OffCycleCreation(props: OffCycleCreationProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props} />\n </BaseComponent>\n )\n}\n\nfunction Root({ dictionary, companyId, payrollType = 'bonus', className }: OffCycleCreationProps) {\n useComponentDictionary('Payroll.OffCycleCreation', dictionary)\n useI18n('Payroll.OffCycleCreation')\n useI18n('Payroll.OffCycleReasonSelection')\n useI18n('Payroll.OffCyclePayPeriodDateForm')\n useI18n('Payroll.OffCycleDeductionsSetting')\n useI18n('Payroll.EmployeeSelection')\n\n const { t } = useTranslation('Payroll.OffCyclePayPeriodDateForm')\n const { t: tCreation } = useTranslation('Payroll.OffCycleCreation')\n const { onEvent, baseSubmitHandler } = useBase()\n\n const { paymentSpeedDays } = useCompanyPaymentSpeed(companyId)\n\n const { minCheckDate, maxDate, minPayPeriodDate, today } =\n useOffCyclePayPeriodDateValidation(paymentSpeedDays)\n const { mutateAsync: createOffCyclePayroll, isPending } = usePayrollsCreateOffCycleMutation()\n\n const [taxWithholdingConfig, setTaxWithholdingConfig] = useState<OffCycleTaxWithholdingConfig>({\n withholdingPayPeriod: WithholdingPayPeriod.EveryOtherWeek,\n withholdingRate: OFF_CYCLE_REASON_DEFAULTS[payrollType].withholdingType,\n })\n const [isTaxWithholdingModalOpen, setIsTaxWithholdingModalOpen] = useState(false)\n\n const handleTaxWithholdingEditClick = useCallback(() => {\n setIsTaxWithholdingModalOpen(true)\n }, [])\n\n const handleTaxWithholdingModalDone = useCallback((config: OffCycleTaxWithholdingConfig) => {\n setTaxWithholdingConfig(config)\n setIsTaxWithholdingModalOpen(false)\n }, [])\n\n const handleTaxWithholdingModalCancel = useCallback(() => {\n setIsTaxWithholdingModalOpen(false)\n }, [])\n\n const { data: employeesData } = useEmployeesListSuspense({\n companyId,\n onboardedActive: true,\n })\n\n const { data: blockersData } = usePayrollsGetBlockersSuspense({\n companyUuid: companyId,\n })\n\n const blockers: ApiPayrollBlocker[] = (blockersData.payrollBlockers ?? []).map(blocker => ({\n key: blocker.key,\n message: blocker.message,\n }))\n\n const employees: MultiSelectComboBoxOption[] = useMemo(() => {\n const employeeList = employeesData.showEmployees ?? []\n return [...employeeList]\n .sort((a, b) => {\n const lastNameComparison = a.lastName.localeCompare(b.lastName)\n if (lastNameComparison !== 0) return lastNameComparison\n return a.firstName.localeCompare(b.firstName)\n })\n .map(employee => {\n const fullName = [employee.firstName, employee.lastName].filter(Boolean).join(' ')\n const primaryJob = employee.jobs?.find(job => job.primary) ?? employee.jobs?.[0]\n return {\n label: fullName,\n value: employee.uuid,\n description: primaryJob?.title || undefined,\n }\n })\n }, [employeesData])\n\n const translateValidation = (key: string, options?: Record<string, unknown>): string =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t(key as any, options as any) as string\n\n const dynamicResolver: Resolver<OffCycleCreationFormData> = (values, context, options) => {\n const isCheckOnly = values.isCheckOnly\n\n const dateSchema = createOffCyclePayPeriodDateFormSchema(\n translateValidation,\n isCheckOnly ? today : minCheckDate,\n paymentSpeedDays,\n )\n const schema = z\n .object({\n reason: z.enum(['bonus', 'correction']),\n skipRegularDeductions: z.boolean(),\n includeAllEmployees: z.boolean(),\n selectedEmployeeUuids: z.array(z.string()),\n })\n .and(dateSchema)\n .superRefine((data, ctx) => {\n if (!data.includeAllEmployees && data.selectedEmployeeUuids.length === 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: ['selectedEmployeeUuids'],\n message: tCreation('errors.noEmployeesSelected'),\n })\n }\n })\n\n return zodResolver(schema)(values, context, options)\n }\n\n const methods = useForm<OffCycleCreationFormData>({\n resolver: dynamicResolver,\n defaultValues: {\n reason: payrollType,\n isCheckOnly: false,\n startDate: null,\n endDate: null,\n checkDate: null,\n skipRegularDeductions: OFF_CYCLE_REASON_DEFAULTS[payrollType].skipDeductions,\n includeAllEmployees: false,\n selectedEmployeeUuids: [],\n },\n })\n\n const watchedReason = methods.watch('reason')\n\n useEffect(() => {\n methods.setValue(\n 'skipRegularDeductions',\n OFF_CYCLE_REASON_DEFAULTS[watchedReason].skipDeductions,\n )\n setTaxWithholdingConfig(prev => ({\n ...prev,\n withholdingRate: OFF_CYCLE_REASON_DEFAULTS[watchedReason].withholdingType,\n }))\n }, [watchedReason, methods])\n\n const onSubmit = async (data: OffCycleCreationFormData) => {\n const reason = data.reason\n const checkDate = data.checkDate!\n const startDate = data.startDate!\n const endDate = data.endDate!\n const employeeUuids = data.includeAllEmployees\n ? employees.map(e => e.value)\n : data.selectedEmployeeUuids.length > 0\n ? data.selectedEmployeeUuids\n : undefined\n\n await baseSubmitHandler(data, async () => {\n const response = await createOffCyclePayroll({\n request: {\n companyId,\n requestBody: {\n offCycle: true,\n offCycleReason: LOCAL_TO_API_REASON[reason],\n startDate: new RFCDate(startDate),\n endDate: new RFCDate(endDate),\n checkDate: new RFCDate(checkDate),\n skipRegularDeductions: data.skipRegularDeductions,\n isCheckOnlyPayroll: data.isCheckOnly,\n employeeUuids,\n withholdingPayPeriod: taxWithholdingConfig.withholdingPayPeriod,\n fixedWithholdingRate: taxWithholdingConfig.withholdingRate === 'supplemental',\n },\n },\n })\n\n const payrollUuid =\n response.payrollUnprocessed?.payrollUuid ?? response.payrollUnprocessed?.uuid\n\n if (!payrollUuid) {\n throw new SDKInternalError(tCreation('errors.missingPayrollId'))\n }\n\n onEvent(componentEvents.OFF_CYCLE_CREATED, { payrollUuid })\n })\n }\n\n return (\n <FormProvider {...methods}>\n <Form onSubmit={methods.handleSubmit(onSubmit)}>\n <OffCycleCreationPresentation\n employees={employees}\n blockers={blockers}\n isPending={isPending}\n minCheckDate={minCheckDate}\n minCheckOnlyDate={today}\n maxDate={maxDate}\n minPayPeriodDate={minPayPeriodDate}\n taxWithholdingConfig={taxWithholdingConfig}\n isTaxWithholdingModalOpen={isTaxWithholdingModalOpen}\n onTaxWithholdingEditClick={handleTaxWithholdingEditClick}\n onTaxWithholdingModalDone={handleTaxWithholdingModalDone}\n onTaxWithholdingModalCancel={handleTaxWithholdingModalCancel}\n className={className}\n />\n </Form>\n </FormProvider>\n )\n}\n"],"names":["LOCAL_TO_API_REASON","ApiOffCycleReason","OffCycleCreation","props","jsx","BaseComponent","Root","dictionary","companyId","payrollType","className","useComponentDictionary","useI18n","t","useTranslation","tCreation","onEvent","baseSubmitHandler","useBase","paymentSpeedDays","useCompanyPaymentSpeed","minCheckDate","maxDate","minPayPeriodDate","today","useOffCyclePayPeriodDateValidation","createOffCyclePayroll","isPending","usePayrollsCreateOffCycleMutation","taxWithholdingConfig","setTaxWithholdingConfig","useState","WithholdingPayPeriod","OFF_CYCLE_REASON_DEFAULTS","isTaxWithholdingModalOpen","setIsTaxWithholdingModalOpen","handleTaxWithholdingEditClick","useCallback","handleTaxWithholdingModalDone","config","handleTaxWithholdingModalCancel","employeesData","useEmployeesListSuspense","blockersData","usePayrollsGetBlockersSuspense","blockers","blocker","employees","useMemo","a","b","lastNameComparison","employee","fullName","primaryJob","job","translateValidation","key","options","methods","useForm","values","context","isCheckOnly","dateSchema","createOffCyclePayPeriodDateFormSchema","schema","z","data","ctx","zodResolver","watchedReason","useEffect","prev","onSubmit","reason","checkDate","startDate","endDate","employeeUuids","e","response","RFCDate","payrollUuid","SDKInternalError","componentEvents","FormProvider","Form","OffCycleCreationPresentation"],"mappings":"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"}
@@ -1,50 +1,52 @@
1
1
  import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
- import { useMemo as k, useCallback as N } from "react";
3
- import { useFormContext as R } from "react-hook-form";
4
- import { useTranslation as c, Trans as j } from "react-i18next";
5
- import { OffCyclePayPeriodDateFormPresentation as I } from "../OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js";
6
- import { WAGE_TYPE_CATEGORIES as L } from "../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js";
2
+ import { useMemo as N, useCallback as R } from "react";
3
+ import { useFormContext as j } from "react-hook-form";
4
+ import { useTranslation as c, Trans as I } from "react-i18next";
5
+ import { OffCyclePayPeriodDateFormPresentation as L } from "../OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js";
6
+ import { PayrollBlockerAlerts as M } from "../PayrollBlocker/components/PayrollBlockerAlerts.js";
7
+ import { WAGE_TYPE_CATEGORIES as V } from "../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js";
7
8
  import s from "./OffCycleCreationPresentation.module.scss.js";
8
9
  import { useI18n as p } from "../../../i18n/I18n.js";
9
- import { useComponentContext as M } from "../../../contexts/ComponentAdapter/useComponentContext.js";
10
+ import { useComponentContext as $ } from "../../../contexts/ComponentAdapter/useComponentContext.js";
10
11
  import { Flex as o } from "../../Common/Flex/Flex.js";
11
- import { OffCycleReasonSelectionPresentation as V } from "../OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js";
12
- import { MultiSelectComboBoxField as $ } from "../../Common/Fields/MultiSelectComboBoxField/MultiSelectComboBoxField.js";
13
- import { RadioGroupField as B } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
14
- import { OffCycleTaxWithholdingTable as H } from "../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js";
15
- import { OffCycleTaxWithholdingModal as U } from "../OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js";
16
- import { SwitchField as _ } from "../../Common/Fields/SwitchField/SwitchField.js";
17
- function ce({
18
- employees: g,
19
- isPending: u,
20
- minCheckDate: C,
21
- minCheckOnlyDate: x,
22
- maxDate: D,
23
- minPayPeriodDate: T,
24
- taxWithholdingConfig: f,
25
- isTaxWithholdingModalOpen: b,
26
- onTaxWithholdingEditClick: P,
27
- onTaxWithholdingModalDone: E,
28
- onTaxWithholdingModalCancel: O,
29
- className: S
12
+ import { OffCycleReasonSelectionPresentation as H } from "../OffCycleReasonSelection/OffCycleReasonSelectionPresentation.js";
13
+ import { MultiSelectComboBoxField as U } from "../../Common/Fields/MultiSelectComboBoxField/MultiSelectComboBoxField.js";
14
+ import { RadioGroupField as _ } from "../../Common/Fields/RadioGroupField/RadioGroupField.js";
15
+ import { OffCycleTaxWithholdingTable as K } from "../OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js";
16
+ import { OffCycleTaxWithholdingModal as Y } from "../OffCycleTaxWithholdingModal/OffCycleTaxWithholdingModal.js";
17
+ import { SwitchField as q } from "../../Common/Fields/SwitchField/SwitchField.js";
18
+ function me({
19
+ employees: x,
20
+ blockers: u,
21
+ isPending: f,
22
+ minCheckDate: D,
23
+ minCheckOnlyDate: T,
24
+ maxDate: b,
25
+ minPayPeriodDate: P,
26
+ taxWithholdingConfig: h,
27
+ isTaxWithholdingModalOpen: E,
28
+ onTaxWithholdingEditClick: O,
29
+ onTaxWithholdingModalDone: S,
30
+ onTaxWithholdingModalCancel: v,
31
+ className: A
30
32
  }) {
31
33
  p("Payroll.OffCycleCreation"), p("Payroll.OffCycleDeductionsSetting"), p("Payroll.EmployeeSelection"), p("Payroll.OffCycleTaxWithholding");
32
- const { t: i } = c("Payroll.OffCycleCreation"), { t } = c("Payroll.OffCycleDeductionsSetting"), { t: d } = c("Payroll.EmployeeSelection"), { t: r } = c("Payroll.OffCycleTaxWithholding"), { Heading: m, Text: a, Button: v } = M(), A = k(
33
- () => L.map((l) => {
34
- const y = {
34
+ const { t: i } = c("Payroll.OffCycleCreation"), { t } = c("Payroll.OffCycleDeductionsSetting"), { t: d } = c("Payroll.EmployeeSelection"), { t: r } = c("Payroll.OffCycleTaxWithholding"), { Heading: m, Text: a, Button: w } = $(), G = N(
35
+ () => V.map((l) => {
36
+ const C = {
35
37
  category: l,
36
38
  label: r(`wageTypeGroups.${l}.label`),
37
39
  taxedAsDescription: r(`wageTypeGroups.${l}.taxedAsDescription`)
38
40
  };
39
- return (l === "regular" || l === "supplemental") && (y.description = r(`wageTypeGroups.${l}.description`)), y;
41
+ return (l === "regular" || l === "supplemental") && (C.description = r(`wageTypeGroups.${l}.description`)), C;
40
42
  }),
41
43
  [r]
42
- ), { setValue: h, watch: w } = R(), G = w("includeAllEmployees"), F = N(
44
+ ), { setValue: y, watch: F } = j(), W = F("includeAllEmployees"), k = R(
43
45
  (l) => {
44
- l && h("selectedEmployeeUuids", []);
46
+ l && y("selectedEmployeeUuids", []);
45
47
  },
46
- [h]
47
- ), W = [
48
+ [y]
49
+ ), B = [
48
50
  {
49
51
  value: !1,
50
52
  label: t("options.include.label")
@@ -53,8 +55,9 @@ function ce({
53
55
  value: !0,
54
56
  label: t("options.skip.label")
55
57
  }
56
- ];
57
- return /* @__PURE__ */ n(o, { className: S, flexDirection: "column", gap: 32, children: [
58
+ ], g = u.length > 0;
59
+ return /* @__PURE__ */ n(o, { className: A, flexDirection: "column", gap: 32, children: [
60
+ g && /* @__PURE__ */ e(M, { blockers: u }),
58
61
  /* @__PURE__ */ n(o, { flexDirection: "column", gap: 4, children: [
59
62
  /* @__PURE__ */ e(m, { as: "h2", children: i("pageTitle") }),
60
63
  /* @__PURE__ */ e(a, { variant: "supporting", children: i("pageDescription") })
@@ -65,54 +68,54 @@ function ce({
65
68
  /* @__PURE__ */ e(a, { variant: "supporting", children: i("payPeriodSectionDescription") })
66
69
  ] }),
67
70
  /* @__PURE__ */ e(
68
- I,
71
+ L,
69
72
  {
70
- minCheckDate: C,
71
- minCheckOnlyDate: x,
72
- maxDate: D,
73
- minPayPeriodDate: T
73
+ minCheckDate: D,
74
+ minCheckOnlyDate: T,
75
+ maxDate: b,
76
+ minPayPeriodDate: P
74
77
  }
75
78
  )
76
79
  ] }),
77
80
  /* @__PURE__ */ e("hr", { className: s.divider }),
78
- /* @__PURE__ */ e(o, { flexDirection: "column", gap: 20, children: /* @__PURE__ */ e(V, { name: "reason" }) }),
81
+ /* @__PURE__ */ e(o, { flexDirection: "column", gap: 20, children: /* @__PURE__ */ e(H, { name: "reason" }) }),
79
82
  /* @__PURE__ */ e("hr", { className: s.divider }),
80
83
  /* @__PURE__ */ n(o, { flexDirection: "column", gap: 12, children: [
81
84
  /* @__PURE__ */ e(m, { as: "h3", children: d("sectionTitle") }),
82
85
  /* @__PURE__ */ e(
83
- _,
86
+ q,
84
87
  {
85
88
  name: "includeAllEmployees",
86
89
  label: i("includeAllEmployeesLabel"),
87
- onChange: F
90
+ onChange: k
88
91
  }
89
92
  ),
90
- !G && /* @__PURE__ */ e(
91
- $,
93
+ !W && /* @__PURE__ */ e(
94
+ U,
92
95
  {
93
96
  name: "selectedEmployeeUuids",
94
97
  label: d("sectionTitle"),
95
98
  shouldVisuallyHideLabel: !0,
96
99
  placeholder: d("searchPlaceholder"),
97
- options: g
100
+ options: x
98
101
  }
99
102
  )
100
103
  ] }),
101
104
  /* @__PURE__ */ e("hr", { className: s.divider }),
102
105
  /* @__PURE__ */ e(o, { flexDirection: "column", gap: 20, children: /* @__PURE__ */ e(
103
- B,
106
+ _,
104
107
  {
105
108
  name: "skipRegularDeductions",
106
109
  label: t("title"),
107
110
  description: t("description"),
108
- options: W,
111
+ options: B,
109
112
  convertValueToString: (l) => String(l)
110
113
  }
111
114
  ) }),
112
115
  /* @__PURE__ */ e("hr", { className: s.divider }),
113
116
  /* @__PURE__ */ n(o, { flexDirection: "column", gap: 12, children: [
114
117
  /* @__PURE__ */ e(a, { variant: "supporting", children: /* @__PURE__ */ e(
115
- j,
118
+ I,
116
119
  {
117
120
  t: i,
118
121
  i18nKey: "taxWithholdingDisclaimer",
@@ -120,27 +123,27 @@ function ce({
120
123
  }
121
124
  ) }),
122
125
  /* @__PURE__ */ e(
123
- H,
126
+ K,
124
127
  {
125
- wageTypeGroups: A,
126
- config: f,
127
- onEditClick: P
128
+ wageTypeGroups: G,
129
+ config: h,
130
+ onEditClick: O
128
131
  }
129
132
  ),
130
- b && /* @__PURE__ */ e(
131
- U,
133
+ E && /* @__PURE__ */ e(
134
+ Y,
132
135
  {
133
136
  isOpen: !0,
134
- defaultConfig: f,
135
- onDone: E,
136
- onCancel: O
137
+ defaultConfig: h,
138
+ onDone: S,
139
+ onCancel: v
137
140
  }
138
141
  )
139
142
  ] }),
140
- /* @__PURE__ */ e(o, { justifyContent: "flex-end", gap: 12, children: /* @__PURE__ */ e(v, { type: "submit", isLoading: u, isDisabled: u, children: i("continueCta") }) })
143
+ /* @__PURE__ */ e(o, { justifyContent: "flex-end", gap: 12, children: /* @__PURE__ */ e(w, { type: "submit", isLoading: f, isDisabled: f || g, children: i("continueCta") }) })
141
144
  ] });
142
145
  }
143
146
  export {
144
- ce as OffCycleCreationPresentation
147
+ me as OffCycleCreationPresentation
145
148
  };
146
149
  //# sourceMappingURL=OffCycleCreationPresentation.js.map