@gusto/embedded-react-sdk 0.55.2 → 0.55.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/components/Common/DataView/DataCards/DataCards.d.ts +2 -1
  3. package/dist/components/Common/DataView/DataCards/DataCards.js +63 -54
  4. package/dist/components/Common/DataView/DataCards/DataCards.js.map +1 -1
  5. package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js +14 -12
  6. package/dist/components/Common/DataView/DataCards/DataCards.module.scss.js.map +1 -1
  7. package/dist/components/Common/DataView/DataTable/DataTable.d.ts +2 -1
  8. package/dist/components/Common/DataView/DataTable/DataTable.js +75 -66
  9. package/dist/components/Common/DataView/DataTable/DataTable.js.map +1 -1
  10. package/dist/components/Common/DataView/DataTable/DataTable.module.scss.js +8 -4
  11. package/dist/components/Common/DataView/DataTable/DataTable.module.scss.js.map +1 -1
  12. package/dist/components/Common/DataView/DataView.js +18 -17
  13. package/dist/components/Common/DataView/DataView.js.map +1 -1
  14. package/dist/components/Common/FieldLayout/FieldLayout.js +6 -6
  15. package/dist/components/Common/Fieldset/Fieldset.js +6 -6
  16. package/dist/components/Common/HorizontalFieldLayout/HorizontalFieldLayout.js +6 -6
  17. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js +58 -49
  18. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.js.map +1 -1
  19. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.module.scss.js +14 -10
  20. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBox.module.scss.js.map +1 -1
  21. package/dist/components/Common/UI/MultiSelectComboBox/MultiSelectComboBoxTypes.d.ts +4 -0
  22. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js +3 -4
  23. package/dist/components/Company/AssignSignatory/CreateSignatory/useCreateSignatory.js.map +1 -1
  24. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js +3 -4
  25. package/dist/components/Company/AssignSignatory/InviteSignatory/useInviteSignatory.js.map +1 -1
  26. package/dist/components/Company/AssignSignatory/useAssignSignatory.js +5 -6
  27. package/dist/components/Company/AssignSignatory/useAssignSignatory.js.map +1 -1
  28. package/dist/components/Company/BankAccount/BankAccountForm/context.js +3 -4
  29. package/dist/components/Company/BankAccount/BankAccountForm/context.js.map +1 -1
  30. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.d.ts +4 -0
  31. package/dist/components/Company/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  32. package/dist/components/Company/DocumentSigner/DocumentList/List.js +11 -8
  33. package/dist/components/Company/DocumentSigner/DocumentList/List.js.map +1 -1
  34. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js +3 -4
  35. package/dist/components/Company/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  36. package/dist/components/Company/FederalTaxes/useFederalTaxes.js +5 -6
  37. package/dist/components/Company/FederalTaxes/useFederalTaxes.js.map +1 -1
  38. package/dist/components/Company/Industry/Context.js +6 -7
  39. package/dist/components/Company/Industry/Context.js.map +1 -1
  40. package/dist/components/Company/Locations/LocationForm/useLocationForm.js +3 -4
  41. package/dist/components/Company/Locations/LocationForm/useLocationForm.js.map +1 -1
  42. package/dist/components/Company/Locations/LocationsList/List.js +27 -25
  43. package/dist/components/Company/Locations/LocationsList/List.js.map +1 -1
  44. package/dist/components/Company/Locations/LocationsList/LocationsList.js +41 -36
  45. package/dist/components/Company/Locations/LocationsList/LocationsList.js.map +1 -1
  46. package/dist/components/Company/Locations/LocationsList/useLocationsList.d.ts +1 -0
  47. package/dist/components/Company/Locations/LocationsList/useLocationsList.js +3 -4
  48. package/dist/components/Company/Locations/LocationsList/useLocationsList.js.map +1 -1
  49. package/dist/components/Company/OnboardingOverview/context.js +3 -4
  50. package/dist/components/Company/OnboardingOverview/context.js.map +1 -1
  51. package/dist/components/Company/StateTaxes/StateTaxesForm/Form.d.ts +9 -2
  52. package/dist/components/Company/StateTaxes/StateTaxesForm/Form.js +19 -18
  53. package/dist/components/Company/StateTaxes/StateTaxesForm/Form.js.map +1 -1
  54. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +63 -62
  55. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
  56. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js +3 -4
  57. package/dist/components/Company/StateTaxes/StateTaxesForm/context.js.map +1 -1
  58. package/dist/components/Company/StateTaxes/StateTaxesList/context.js +3 -4
  59. package/dist/components/Company/StateTaxes/StateTaxesList/context.js.map +1 -1
  60. package/dist/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.js +69 -65
  61. package/dist/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.js.map +1 -1
  62. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js +3 -4
  63. package/dist/components/Company/StateTaxes/TaxRateManagement/context.js.map +1 -1
  64. package/dist/components/Company/StateTaxes/TaxRateManagement/toHistoryRows.js +30 -23
  65. package/dist/components/Company/StateTaxes/TaxRateManagement/toHistoryRows.js.map +1 -1
  66. package/dist/components/Company/StateTaxes/shared/RequirementFields.d.ts +8 -4
  67. package/dist/components/Company/StateTaxes/shared/RequirementFields.js +13 -12
  68. package/dist/components/Company/StateTaxes/shared/RequirementFields.js.map +1 -1
  69. package/dist/components/Company/StateTaxes/shared/prepareRequirements.d.ts +29 -0
  70. package/dist/components/Company/StateTaxes/shared/prepareRequirements.js +24 -0
  71. package/dist/components/Company/StateTaxes/shared/prepareRequirements.js.map +1 -0
  72. package/dist/components/Company/StateTaxes/shared/prepareRequirements.test.d.ts +1 -0
  73. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js +68 -55
  74. package/dist/components/Contractor/Payments/PaymentsList/PaymentsList.js.map +1 -1
  75. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js +36 -35
  76. package/dist/components/Contractor/Payments/PaymentsList/PaymentsListPresentation.js.map +1 -1
  77. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js +116 -116
  78. package/dist/components/Employee/Compensation/shared/useJobForm/useJobForm.js.map +1 -1
  79. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.d.ts +4 -0
  80. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js +19 -19
  81. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/DocumentList.js.map +1 -1
  82. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.js +16 -13
  83. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/List.js.map +1 -1
  84. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js +3 -4
  85. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentList/useDocumentList.js.map +1 -1
  86. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.d.ts +4 -0
  87. package/dist/components/Employee/Documents/onboarding/DocumentSigner/DocumentSigner.js.map +1 -1
  88. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js +84 -96
  89. package/dist/components/Employee/Paystubs/management/PaystubsCard/PaystubsCard.js.map +1 -1
  90. package/dist/components/Flow/Flow.js +22 -22
  91. package/dist/components/Flow/Flow.js.map +1 -1
  92. package/dist/components/Flow/useFlow.js +3 -3
  93. package/dist/components/InformationRequests/InformationRequests.d.ts +1 -1
  94. package/dist/components/InformationRequests/InformationRequests.js +68 -53
  95. package/dist/components/InformationRequests/InformationRequests.js.map +1 -1
  96. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +2 -3
  97. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  98. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js +87 -81
  99. package/dist/components/Payroll/OffCycleCreation/OffCycleCreation.js.map +1 -1
  100. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.d.ts +1 -1
  101. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js +86 -67
  102. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationPresentation.js.map +1 -1
  103. package/dist/components/Payroll/OffCycleCreation/OffCycleCreationTypes.d.ts +4 -0
  104. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.d.ts +1 -1
  105. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js +26 -21
  106. package/dist/components/Payroll/OffCycleDeductionsSetting/OffCycleDeductionsSetting.js.map +1 -1
  107. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.d.ts +8 -1
  108. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js +29 -17
  109. package/dist/components/Payroll/OffCyclePayPeriodDateForm/OffCyclePayPeriodDateFormPresentation.js.map +1 -1
  110. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js +21 -18
  111. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.js.map +1 -1
  112. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js +9 -7
  113. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTable.module.scss.js.map +1 -1
  114. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.d.ts +2 -0
  115. package/dist/components/Payroll/OffCycleTaxWithholdingTable/OffCycleTaxWithholdingTableTypes.js.map +1 -1
  116. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +200 -199
  117. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  118. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +3 -2
  119. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +32 -32
  120. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  121. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +254 -243
  122. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  123. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js +83 -76
  124. package/dist/components/Payroll/PayrollHistory/PayrollHistory.js.map +1 -1
  125. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +23 -22
  126. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  127. package/dist/components/Payroll/PayrollList/PayrollList.js +108 -97
  128. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  129. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js +38 -37
  130. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  131. package/dist/components/Payroll/PayrollOverview/PayrollOverview.d.ts +8 -1
  132. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +196 -174
  133. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  134. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.d.ts +3 -1
  135. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +173 -163
  136. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  137. package/dist/components/Payroll/helpers.d.ts +0 -15
  138. package/dist/components/Payroll/helpers.js +13 -18
  139. package/dist/components/Payroll/helpers.js.map +1 -1
  140. package/dist/components/Payroll/usePreparedPayrollData.js +8 -9
  141. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  142. package/dist/helpers/openPdfInNewTab.d.ts +15 -0
  143. package/dist/helpers/openPdfInNewTab.js +28 -0
  144. package/dist/helpers/openPdfInNewTab.js.map +1 -0
  145. package/dist/i18n/en/Company.DocumentList.json.js +34 -32
  146. package/dist/i18n/en/Company.DocumentList.json.js.map +1 -1
  147. package/dist/i18n/en/Company.StateTaxes.json.js +1 -1
  148. package/dist/i18n/en/Employee.DocumentSigner.json.js +24 -22
  149. package/dist/i18n/en/Employee.DocumentSigner.json.js.map +1 -1
  150. package/dist/i18n/en/Payroll.OffCycleCreation.json.js +11 -9
  151. package/dist/i18n/en/Payroll.OffCycleCreation.json.js.map +1 -1
  152. package/dist/i18n/en/Payroll.OffCycleTaxWithholding.json.js +7 -7
  153. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js +29 -27
  154. package/dist/i18n/en/Payroll.PayrollEditEmployee.json.js.map +1 -1
  155. package/dist/i18n/en/Payroll.PayrollOverview.json.js +41 -39
  156. package/dist/i18n/en/Payroll.PayrollOverview.json.js.map +1 -1
  157. package/dist/i18n/types.d.ts +331 -1
  158. package/dist/style.css +1 -1
  159. package/package.json +21 -21
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesForm/Form.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { Fragment } from 'react/jsx-runtime'\nimport { RequirementFields } from '../shared/RequirementFields'\nimport { getUniqueRhfKey } from '../shared/rhfKey'\nimport { useStateTaxesForm } from './context'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\n\n/** @internal */\nexport function Form() {\n const { t } = useTranslation('Company.StateTaxes', { keyPrefix: 'form' })\n const dateFormatter = useDateFormatter()\n const { stateTaxRequirements } = useStateTaxesForm()\n const Components = useComponentContext()\n const requirementSets = stateTaxRequirements.requirementSets ?? []\n\n // A single key (e.g. \"taxrates\") can appear in more than one set when a future-dated set is\n // already scheduled alongside the current one — each rendered section still needs its own\n // disambiguated form path so the two sections' fields don't share state.\n return requirementSets.map((requirementSet, index) => {\n const { requirements, label, effectiveFrom, key } = requirementSet\n if (!key) return null\n const requirementSetPath = getUniqueRhfKey(requirementSet, index, requirementSets)\n return (\n <Fragment key={requirementSetPath}>\n <div>\n <Components.Heading as=\"h3\">{label}</Components.Heading>\n {effectiveFrom && (\n <Components.Text size=\"sm\">\n {t('effectiveFromLabel', { date: dateFormatter.formatLongWithYear(effectiveFrom) })}\n </Components.Text>\n )}\n </div>\n <RequirementFields requirements={requirements} requirementSetKey={requirementSetPath} />\n </Fragment>\n )\n })\n}\n"],"names":["Form","t","useTranslation","dateFormatter","useDateFormatter","stateTaxRequirements","useStateTaxesForm","Components","useComponentContext","requirementSets","requirementSet","index","requirements","label","effectiveFrom","key","requirementSetPath","getUniqueRhfKey","Fragment","jsxs","jsx","RequirementFields"],"mappings":";;;;;;;AASO,SAASA,IAAO;AACrB,QAAM,EAAE,GAAAC,MAAMC,EAAe,sBAAsB,EAAE,WAAW,QAAQ,GAClEC,IAAgBC,EAAA,GAChB,EAAE,sBAAAC,EAAA,IAAyBC,EAAA,GAC3BC,IAAaC,EAAA,GACbC,IAAkBJ,EAAqB,mBAAmB,CAAA;AAKhE,SAAOI,EAAgB,IAAI,CAACC,GAAgBC,MAAU;AACpD,UAAM,EAAE,cAAAC,GAAc,OAAAC,GAAO,eAAAC,GAAe,KAAAC,MAAQL;AACpD,QAAI,CAACK,EAAK,QAAO;AACjB,UAAMC,IAAqBC,EAAgBP,GAAgBC,GAAOF,CAAe;AACjF,6BACGS,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAC,EAAC,OAAA,EACC,UAAA;AAAA,QAAA,gBAAAC,EAACb,EAAW,SAAX,EAAmB,IAAG,MAAM,UAAAM,GAAM;AAAA,QAClCC,KACC,gBAAAM,EAACb,EAAW,MAAX,EAAgB,MAAK,MACnB,UAAAN,EAAE,sBAAsB,EAAE,MAAME,EAAc,mBAAmBW,CAAa,EAAA,CAAG,EAAA,CACpF;AAAA,MAAA,GAEJ;AAAA,MACA,gBAAAM,EAACC,GAAA,EAAkB,cAAAT,GAA4B,mBAAmBI,EAAA,CAAoB;AAAA,IAAA,EAAA,GATzEA,CAUf;AAAA,EAEJ,CAAC;AACH;"}
1
+ {"version":3,"file":"Form.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesForm/Form.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { Fragment } from 'react/jsx-runtime'\nimport { RequirementFields } from '../shared/RequirementFields'\nimport { getUniqueRhfKey } from '../shared/rhfKey'\nimport { isRequirementSetEditable } from '../shared/prepareRequirements'\nimport { useStateTaxesForm } from './context'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\n\n/**\n * Renders one section per requirement set, skipping sets that have nothing left to edit once\n * non-editable requirements — and requirements resolved as never-applicable against a\n * non-editable sibling — are dropped (mirrors gws-flows' `TaxRequirements::Edit.set_editable?`,\n * which drops such sets from its own edit view entirely).\n *\n * @internal\n */\nexport function Form() {\n const { t } = useTranslation('Company.StateTaxes', { keyPrefix: 'form' })\n const dateFormatter = useDateFormatter()\n const { stateTaxRequirements } = useStateTaxesForm()\n const Components = useComponentContext()\n const requirementSets = stateTaxRequirements.requirementSets ?? []\n\n // A single key (e.g. \"taxrates\") can appear in more than one set when a future-dated set is\n // already scheduled alongside the current one — each rendered section still needs its own\n // disambiguated form path so the two sections' fields don't share state.\n const sections = requirementSets.map((requirementSet, index) => {\n const { requirements, label, effectiveFrom, key } = requirementSet\n if (!key) return null\n if (!isRequirementSetEditable(requirements ?? [])) return null\n const requirementSetPath = getUniqueRhfKey(requirementSet, index, requirementSets)\n return (\n <Fragment key={requirementSetPath}>\n <div>\n <Components.Heading as=\"h3\">{label}</Components.Heading>\n {effectiveFrom && (\n <Components.Text size=\"sm\">\n {t('effectiveFromLabel', { date: dateFormatter.formatLongWithYear(effectiveFrom) })}\n </Components.Text>\n )}\n </div>\n <RequirementFields requirements={requirements} requirementSetKey={requirementSetPath} />\n </Fragment>\n )\n })\n\n if (sections.every(section => section === null)) {\n return (\n <Components.Alert status=\"info\" label={t('noEditableRequirementsTitle')}>\n {t('noEditableRequirementsDescription')}\n </Components.Alert>\n )\n }\n\n return sections\n}\n"],"names":["Form","t","useTranslation","dateFormatter","useDateFormatter","stateTaxRequirements","useStateTaxesForm","Components","useComponentContext","requirementSets","sections","requirementSet","index","requirements","label","effectiveFrom","key","isRequirementSetEditable","requirementSetPath","getUniqueRhfKey","Fragment","jsxs","jsx","RequirementFields","section"],"mappings":";;;;;;;;AAiBO,SAASA,IAAO;AACrB,QAAM,EAAE,GAAAC,MAAMC,EAAe,sBAAsB,EAAE,WAAW,QAAQ,GAClEC,IAAgBC,EAAA,GAChB,EAAE,sBAAAC,EAAA,IAAyBC,EAAA,GAC3BC,IAAaC,EAAA,GACbC,IAAkBJ,EAAqB,mBAAmB,CAAA,GAK1DK,IAAWD,EAAgB,IAAI,CAACE,GAAgBC,MAAU;AAC9D,UAAM,EAAE,cAAAC,GAAc,OAAAC,GAAO,eAAAC,GAAe,KAAAC,MAAQL;AAEpD,QADI,CAACK,KACD,CAACC,EAAyBJ,KAAgB,CAAA,CAAE,EAAG,QAAO;AAC1D,UAAMK,IAAqBC,EAAgBR,GAAgBC,GAAOH,CAAe;AACjF,6BACGW,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAC,EAAC,OAAA,EACC,UAAA;AAAA,QAAA,gBAAAC,EAACf,EAAW,SAAX,EAAmB,IAAG,MAAM,UAAAO,GAAM;AAAA,QAClCC,KACC,gBAAAO,EAACf,EAAW,MAAX,EAAgB,MAAK,MACnB,UAAAN,EAAE,sBAAsB,EAAE,MAAME,EAAc,mBAAmBY,CAAa,EAAA,CAAG,EAAA,CACpF;AAAA,MAAA,GAEJ;AAAA,MACA,gBAAAO,EAACC,GAAA,EAAkB,cAAAV,GAA4B,mBAAmBK,EAAA,CAAoB;AAAA,IAAA,EAAA,GATzEA,CAUf;AAAA,EAEJ,CAAC;AAED,SAAIR,EAAS,MAAM,CAAAc,MAAWA,MAAY,IAAI,IAE1C,gBAAAF,EAACf,EAAW,OAAX,EAAiB,QAAO,QAAO,OAAON,EAAE,6BAA6B,GACnE,UAAAA,EAAE,mCAAmC,EAAA,CACxC,IAIGS;AACT;"}
@@ -1,87 +1,88 @@
1
- import { jsx as t, jsxs as D, Fragment as M } from "react/jsx-runtime";
2
- import { useForm as _, FormProvider as w } from "react-hook-form";
3
- import { zodResolver as z } from "@hookform/resolvers/zod";
4
- import { useTaxRequirementsUpdateStateMutation as H } from "@gusto/embedded-api/react-query/taxRequirementsUpdateState";
5
- import { useTaxRequirementsGetSuspense as K } from "@gusto/embedded-api/react-query/taxRequirementsGet";
1
+ import { jsx as t, jsxs as M, Fragment as _ } from "react/jsx-runtime";
2
+ import { useForm as w, FormProvider as z } from "react-hook-form";
3
+ import { zodResolver as H } from "@hookform/resolvers/zod";
4
+ import { useTaxRequirementsUpdateStateMutation as K } from "@gusto/embedded-api/react-query/taxRequirementsUpdateState";
5
+ import { useTaxRequirementsGetSuspense as N } from "@gusto/embedded-api/react-query/taxRequirementsGet";
6
6
  import { z as b } from "zod";
7
- import { useMemo as N } from "react";
8
- import { useTranslation as O } from "react-i18next";
7
+ import { useMemo as O } from "react";
8
+ import { useTranslation as G } from "react-i18next";
9
9
  import { getUniqueRhfKey as d } from "../shared/rhfKey.js";
10
- import { isRequirementApplicable as G } from "../shared/applicableIf.js";
11
- import { buildRequirementSchema as L } from "../shared/buildRequirementSchema.js";
12
- import { stringifyRequirementValue as X } from "../shared/requirementValue.js";
13
- import { Head as Y } from "./Head.js";
14
- import { StateTaxesFormProvider as $ } from "./context.js";
15
- import { Form as I } from "./Form.js";
16
- import { Actions as J } from "./Actions.js";
17
- import { BaseComponent as Q } from "../../../Base/Base.js";
18
- import { useI18n as W } from "../../../../i18n/I18n.js";
19
- import { Flex as Z } from "../../../Common/Flex/Flex.js";
20
- import { Form as ee } from "../../../Common/Form/Form.js";
21
- import { componentEvents as R } from "../../../../shared/constants.js";
22
- import { useBase as te } from "../../../Base/useBase.js";
23
- function Pe(n) {
24
- return /* @__PURE__ */ t(Q, { ...n, children: /* @__PURE__ */ t(re, { ...n, children: n.children }) });
10
+ import { isRequirementApplicable as L } from "../shared/applicableIf.js";
11
+ import { prepareRequirements as v } from "../shared/prepareRequirements.js";
12
+ import { buildRequirementSchema as X } from "../shared/buildRequirementSchema.js";
13
+ import { stringifyRequirementValue as Y } from "../shared/requirementValue.js";
14
+ import { Head as $ } from "./Head.js";
15
+ import { StateTaxesFormProvider as I } from "./context.js";
16
+ import { Form as J } from "./Form.js";
17
+ import { Actions as Q } from "./Actions.js";
18
+ import { BaseComponent as W } from "../../../Base/Base.js";
19
+ import { useI18n as Z } from "../../../../i18n/I18n.js";
20
+ import { Flex as ee } from "../../../Common/Flex/Flex.js";
21
+ import { Form as te } from "../../../Common/Form/Form.js";
22
+ import { componentEvents as F } from "../../../../shared/constants.js";
23
+ import { useBase as re } from "../../../Base/useBase.js";
24
+ function ke(o) {
25
+ return /* @__PURE__ */ t(W, { ...o, children: /* @__PURE__ */ t(oe, { ...o, children: o.children }) });
25
26
  }
26
- function re({ companyId: n, state: a, className: v, children: S }) {
27
- W("Company.StateTaxes");
28
- const { onEvent: y, baseSubmitHandler: F } = te(), { t: q } = O("Company.StateTaxes", { keyPrefix: "form" }), { data: P } = K({ companyUuid: n, state: a }), c = P.taxRequirementsState, { mutateAsync: g, isPending: k } = H(), { dynamicSchema: A, defaultValues: C } = N(() => {
29
- const u = {}, m = {}, f = c.requirementSets ?? [];
30
- return f.forEach((s, e) => {
31
- if (!s.key) return;
32
- const r = d(s, e, f), { shape: i, defaults: p } = L(s.requirements, q);
33
- Object.keys(i).length > 0 && (u[r] = b.object(i), m[r] = p);
27
+ function oe({ companyId: o, state: c, className: P, children: q }) {
28
+ Z("Company.StateTaxes");
29
+ const { onEvent: y, baseSubmitHandler: g } = re(), { t: x } = G("Company.StateTaxes", { keyPrefix: "form" }), { data: k } = N({ companyUuid: o, state: c }), u = k.taxRequirementsState, { mutateAsync: A, isPending: C } = K(), { dynamicSchema: E, defaultValues: U } = O(() => {
30
+ const f = {}, n = {}, p = u.requirementSets ?? [];
31
+ return p.forEach((i, e) => {
32
+ if (!i.key) return;
33
+ const r = d(i, e, p), s = v(i.requirements ?? []), { shape: a, defaults: h } = X(s, x);
34
+ Object.keys(a).length > 0 && (f[r] = b.object(a), n[r] = h);
34
35
  }), {
35
- dynamicSchema: b.object(u),
36
- defaultValues: m
36
+ dynamicSchema: b.object(f),
37
+ defaultValues: n
37
38
  };
38
- }, [c, q]), { control: E, ...x } = _({
39
- resolver: z(A),
40
- defaultValues: C
41
- }), U = async (u) => {
42
- await F(u, async (m) => {
43
- const f = m, l = c.requirementSets ?? [], s = l.map((e, r) => ({ requirementSet: e, setIndex: r })).filter(({ requirementSet: e, setIndex: r }) => {
39
+ }, [u, x]), { control: j, ...R } = w({
40
+ resolver: H(E),
41
+ defaultValues: U
42
+ }), B = async (f) => {
43
+ await g(f, async (n) => {
44
+ const p = n, l = u.requirementSets ?? [], i = l.map((e, r) => ({ requirementSet: e, setIndex: r })).filter(({ requirementSet: e, setIndex: r }) => {
44
45
  if (!e.key) return !1;
45
- const i = d(e, r, l);
46
- return !!m[i];
46
+ const s = d(e, r, l);
47
+ return !!n[s];
47
48
  }).map(({ requirementSet: e, setIndex: r }) => {
48
- const i = e.key, p = d(e, r, l), B = m[p], T = e.requirements ?? [], V = T.map((o, h) => ({ req: o, index: h })).filter(({ req: o }) => o.editable !== !1).filter(({ req: o }) => G(o, p, f));
49
+ const s = e.key, a = d(e, r, l), h = n[a], T = v(e.requirements ?? []), D = T.map((m, S) => ({ req: m, index: S })).filter(({ req: m }) => L(m, a, p));
49
50
  return {
50
- state: a,
51
- key: i,
51
+ state: c,
52
+ key: s,
52
53
  effectiveFrom: e.effectiveFrom,
53
- requirements: V.map(({ req: o, index: h }) => ({
54
- key: o.key,
55
- value: X(
56
- B[d(o, h, T)]
54
+ requirements: D.map(({ req: m, index: S }) => ({
55
+ key: m.key,
56
+ value: Y(
57
+ h[d(m, S, T)]
57
58
  )
58
59
  }))
59
60
  };
60
61
  });
61
- await g({
62
+ await A({
62
63
  request: {
63
- companyUuid: n,
64
- requestBody: { requirementSets: s },
65
- state: a
64
+ companyUuid: o,
65
+ requestBody: { requirementSets: i },
66
+ state: c
66
67
  }
67
- }), y(R.COMPANY_STATE_TAX_UPDATED);
68
+ }), y(F.COMPANY_STATE_TAX_UPDATED);
68
69
  });
69
- }, j = () => {
70
- y(R.CANCEL);
70
+ }, V = () => {
71
+ y(F.CANCEL);
71
72
  };
72
- return /* @__PURE__ */ t("section", { className: v, children: /* @__PURE__ */ t(w, { ...x, control: E, children: /* @__PURE__ */ t(ee, { onSubmit: x.handleSubmit(U), children: /* @__PURE__ */ t(
73
- $,
73
+ return /* @__PURE__ */ t("section", { className: P, children: /* @__PURE__ */ t(z, { ...R, control: j, children: /* @__PURE__ */ t(te, { onSubmit: R.handleSubmit(B), children: /* @__PURE__ */ t(
74
+ I,
74
75
  {
75
- value: { stateTaxRequirements: c, isPending: k, state: a, handleCancel: j },
76
- children: /* @__PURE__ */ t(Z, { flexDirection: "column", gap: 32, children: S || /* @__PURE__ */ D(M, { children: [
77
- /* @__PURE__ */ t(Y, {}),
78
- /* @__PURE__ */ t(I, {}),
79
- /* @__PURE__ */ t(J, {})
76
+ value: { stateTaxRequirements: u, isPending: C, state: c, handleCancel: V },
77
+ children: /* @__PURE__ */ t(ee, { flexDirection: "column", gap: 32, children: q || /* @__PURE__ */ M(_, { children: [
78
+ /* @__PURE__ */ t($, {}),
79
+ /* @__PURE__ */ t(J, {}),
80
+ /* @__PURE__ */ t(Q, {})
80
81
  ] }) })
81
82
  }
82
83
  ) }) }) });
83
84
  }
84
85
  export {
85
- Pe as StateTaxesForm
86
+ ke as StateTaxesForm
86
87
  };
87
88
  //# sourceMappingURL=StateTaxesForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StateTaxesForm.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.tsx"],"sourcesContent":["import { FormProvider, useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTaxRequirementsUpdateStateMutation } from '@gusto/embedded-api/react-query/taxRequirementsUpdateState'\nimport { useTaxRequirementsGetSuspense } from '@gusto/embedded-api/react-query/taxRequirementsGet'\nimport { z } from 'zod'\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { getUniqueRhfKey } from '../shared/rhfKey'\nimport { isRequirementApplicable, type StateTaxesFormValues } from '../shared/applicableIf'\nimport { buildRequirementSchema } from '../shared/buildRequirementSchema'\nimport { stringifyRequirementValue } from '../shared/requirementValue'\nimport { Head } from './Head'\nimport { StateTaxesFormProvider } from './context'\nimport { Form } from './Form'\nimport { Actions } from './Actions'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useI18n } from '@/i18n/I18n'\nimport { Flex } from '@/components/Common/Flex/Flex'\nimport { Form as HtmlForm } from '@/components/Common/Form'\nimport { componentEvents } from '@/shared/constants'\nimport { useBase } from '@/components/Base'\n\n/**\n * Props for {@link StateTaxesForm}.\n *\n * @public\n */\nexport interface StateTaxesFormProps extends BaseComponentInterface<'Company.StateTaxes'> {\n /** The associated company identifier. */\n companyId: string\n /** Two-letter code of the state whose tax requirements are edited. */\n state: string\n}\n\n/**\n * Standalone form for editing a company's state tax requirements for a single state.\n *\n * @remarks\n * Lower-level building block used by {@link StateTaxes} for its edit view. Use directly when\n * you need full control over navigation between the list and edit views.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `company/stateTaxes/updated` | State tax requirements were saved successfully | Response from the update state tax requirements API |\n * | `CANCEL` | The user cancelled editing | — |\n *\n * @param props - {@link StateTaxesFormProps}\n * @returns The rendered state taxes edit form.\n * @public\n *\n * @example\n * ```tsx\n * import { CompanyOnboarding } from '@gusto/embedded-react-sdk'\n *\n * function MyComponent() {\n * return (\n * <CompanyOnboarding.StateTaxesForm\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * state=\"CA\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function StateTaxesForm(props: StateTaxesFormProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nfunction Root({ companyId, state, className, children }: StateTaxesFormProps) {\n useI18n('Company.StateTaxes')\n const { onEvent, baseSubmitHandler } = useBase()\n const { t } = useTranslation('Company.StateTaxes', { keyPrefix: 'form' })\n const { data } = useTaxRequirementsGetSuspense({ companyUuid: companyId, state })\n const stateTaxRequirements = data.taxRequirementsState!\n\n const { mutateAsync: updateStateTax, isPending: isPendingUpdate } =\n useTaxRequirementsUpdateStateMutation()\n\n // Schema and default value generation\n const { dynamicSchema, defaultValues } = useMemo(() => {\n const schemaShape: Record<string, z.ZodObject> = {}\n const values: Partial<Record<string, Record<string, string | boolean | number | undefined>>> =\n {}\n const requirementSets = stateTaxRequirements.requirementSets ?? []\n\n //Looping through each requirement set. A single key (e.g. \"taxrates\") can appear more than\n //once when a future-dated set is already scheduled alongside the current one, so each set\n //needs its own disambiguated path — otherwise two visually distinct sections would silently\n //share one underlying form field.\n requirementSets.forEach((requirementSet, index) => {\n if (!requirementSet.key) return\n\n const requirementSetPath = getUniqueRhfKey(requirementSet, index, requirementSets)\n const { shape, defaults } = buildRequirementSchema(requirementSet.requirements, t)\n\n if (Object.keys(shape).length > 0) {\n schemaShape[requirementSetPath] = z.object(shape)\n values[requirementSetPath] = defaults\n }\n })\n\n const finalSchema = z.object(schemaShape)\n\n // Return both the schema and the default values\n return {\n dynamicSchema: finalSchema,\n defaultValues: values as z.infer<typeof finalSchema>,\n }\n }, [stateTaxRequirements, t])\n\n // Infer the type from the schema\n type InferredFormInputs = z.infer<typeof dynamicSchema>\n\n const { control, ...methods } = useForm({\n resolver: zodResolver(dynamicSchema),\n defaultValues,\n })\n\n const onSubmit = async (formData: InferredFormInputs) => {\n await baseSubmitHandler(formData, async payload => {\n const formValues = payload as StateTaxesFormValues\n const allRequirementSets = stateTaxRequirements.requirementSets ?? []\n const requirementSets = allRequirementSets\n .map((requirementSet, setIndex) => ({ requirementSet, setIndex }))\n .filter(({ requirementSet, setIndex }) => {\n if (!requirementSet.key) return false\n const requirementSetPath = getUniqueRhfKey(requirementSet, setIndex, allRequirementSets)\n return Boolean(payload[requirementSetPath])\n })\n .map(({ requirementSet, setIndex }) => {\n const requirementSetKey = requirementSet.key as string\n const requirementSetPath = getUniqueRhfKey(requirementSet, setIndex, allRequirementSets)\n const payloadSet = payload[requirementSetPath] as Record<string, unknown>\n const requirements = requirementSet.requirements ?? []\n\n const applicableRequirements = requirements\n .map((req, index) => ({ req, index }))\n .filter(({ req }) => req.editable !== false)\n .filter(({ req }) => isRequirementApplicable(req, requirementSetPath, formValues))\n\n return {\n state,\n key: requirementSetKey,\n effectiveFrom: requirementSet.effectiveFrom,\n requirements: applicableRequirements.map(({ req, index }) => ({\n key: req.key as string,\n value: stringifyRequirementValue(\n payloadSet[getUniqueRhfKey(req, index, requirements)],\n ),\n })),\n }\n })\n await updateStateTax({\n request: {\n companyUuid: companyId,\n requestBody: { requirementSets },\n state,\n },\n })\n onEvent(componentEvents.COMPANY_STATE_TAX_UPDATED)\n })\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n return (\n <section className={className}>\n <FormProvider {...methods} control={control}>\n <HtmlForm onSubmit={methods.handleSubmit(onSubmit)}>\n <StateTaxesFormProvider\n value={{ stateTaxRequirements, isPending: isPendingUpdate, state, handleCancel }}\n >\n <Flex flexDirection=\"column\" gap={32}>\n {children ? (\n children\n ) : (\n <>\n <Head />\n <Form />\n <Actions />\n </>\n )}\n </Flex>\n </StateTaxesFormProvider>\n </HtmlForm>\n </FormProvider>\n </section>\n )\n}\n"],"names":["StateTaxesForm","props","jsx","BaseComponent","Root","companyId","state","className","children","useI18n","onEvent","baseSubmitHandler","useBase","t","useTranslation","data","useTaxRequirementsGetSuspense","stateTaxRequirements","updateStateTax","isPendingUpdate","useTaxRequirementsUpdateStateMutation","dynamicSchema","defaultValues","useMemo","schemaShape","values","requirementSets","requirementSet","index","requirementSetPath","getUniqueRhfKey","shape","defaults","buildRequirementSchema","z","control","methods","useForm","zodResolver","onSubmit","formData","payload","formValues","allRequirementSets","setIndex","requirementSetKey","payloadSet","requirements","applicableRequirements","req","isRequirementApplicable","stringifyRequirementValue","componentEvents","handleCancel","FormProvider","HtmlForm","StateTaxesFormProvider","Flex","jsxs","Fragment","Head","Form","Actions"],"mappings":"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"}
1
+ {"version":3,"file":"StateTaxesForm.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.tsx"],"sourcesContent":["import { FormProvider, useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTaxRequirementsUpdateStateMutation } from '@gusto/embedded-api/react-query/taxRequirementsUpdateState'\nimport { useTaxRequirementsGetSuspense } from '@gusto/embedded-api/react-query/taxRequirementsGet'\nimport { z } from 'zod'\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { getUniqueRhfKey } from '../shared/rhfKey'\nimport { isRequirementApplicable, type StateTaxesFormValues } from '../shared/applicableIf'\nimport { prepareRequirements } from '../shared/prepareRequirements'\nimport { buildRequirementSchema } from '../shared/buildRequirementSchema'\nimport { stringifyRequirementValue } from '../shared/requirementValue'\nimport { Head } from './Head'\nimport { StateTaxesFormProvider } from './context'\nimport { Form } from './Form'\nimport { Actions } from './Actions'\nimport type { BaseComponentInterface } from '@/components/Base/Base'\nimport { BaseComponent } from '@/components/Base/Base'\nimport { useI18n } from '@/i18n/I18n'\nimport { Flex } from '@/components/Common/Flex/Flex'\nimport { Form as HtmlForm } from '@/components/Common/Form'\nimport { componentEvents } from '@/shared/constants'\nimport { useBase } from '@/components/Base'\n\n/**\n * Props for {@link StateTaxesForm}.\n *\n * @public\n */\nexport interface StateTaxesFormProps extends BaseComponentInterface<'Company.StateTaxes'> {\n /** The associated company identifier. */\n companyId: string\n /** Two-letter code of the state whose tax requirements are edited. */\n state: string\n}\n\n/**\n * Standalone form for editing a company's state tax requirements for a single state.\n *\n * @remarks\n * Lower-level building block used by {@link StateTaxes} for its edit view. Use directly when\n * you need full control over navigation between the list and edit views.\n *\n * @events\n * | Event | Description | Data |\n * | ----- | ----------- | ---- |\n * | `company/stateTaxes/updated` | State tax requirements were saved successfully | Response from the update state tax requirements API |\n * | `CANCEL` | The user cancelled editing | — |\n *\n * @param props - {@link StateTaxesFormProps}\n * @returns The rendered state taxes edit form.\n * @public\n *\n * @example\n * ```tsx\n * import { CompanyOnboarding } from '@gusto/embedded-react-sdk'\n *\n * function MyComponent() {\n * return (\n * <CompanyOnboarding.StateTaxesForm\n * companyId=\"a007e1ab-3595-43c2-ab4b-af7a5af2e365\"\n * state=\"CA\"\n * onEvent={() => {}}\n * />\n * )\n * }\n * ```\n */\nexport function StateTaxesForm(props: StateTaxesFormProps) {\n return (\n <BaseComponent {...props}>\n <Root {...props}>{props.children}</Root>\n </BaseComponent>\n )\n}\n\nfunction Root({ companyId, state, className, children }: StateTaxesFormProps) {\n useI18n('Company.StateTaxes')\n const { onEvent, baseSubmitHandler } = useBase()\n const { t } = useTranslation('Company.StateTaxes', { keyPrefix: 'form' })\n const { data } = useTaxRequirementsGetSuspense({ companyUuid: companyId, state })\n const stateTaxRequirements = data.taxRequirementsState!\n\n const { mutateAsync: updateStateTax, isPending: isPendingUpdate } =\n useTaxRequirementsUpdateStateMutation()\n\n // Schema and default value generation\n const { dynamicSchema, defaultValues } = useMemo(() => {\n const schemaShape: Record<string, z.ZodObject> = {}\n const values: Partial<Record<string, Record<string, string | boolean | number | undefined>>> =\n {}\n const requirementSets = stateTaxRequirements.requirementSets ?? []\n\n //Looping through each requirement set. A single key (e.g. \"taxrates\") can appear more than\n //once when a future-dated set is already scheduled alongside the current one, so each set\n //needs its own disambiguated path — otherwise two visually distinct sections would silently\n //share one underlying form field.\n requirementSets.forEach((requirementSet, index) => {\n if (!requirementSet.key) return\n\n const requirementSetPath = getUniqueRhfKey(requirementSet, index, requirementSets)\n const preparedRequirements = prepareRequirements(requirementSet.requirements ?? [])\n const { shape, defaults } = buildRequirementSchema(preparedRequirements, t)\n\n if (Object.keys(shape).length > 0) {\n schemaShape[requirementSetPath] = z.object(shape)\n values[requirementSetPath] = defaults\n }\n })\n\n const finalSchema = z.object(schemaShape)\n\n // Return both the schema and the default values\n return {\n dynamicSchema: finalSchema,\n defaultValues: values as z.infer<typeof finalSchema>,\n }\n }, [stateTaxRequirements, t])\n\n // Infer the type from the schema\n type InferredFormInputs = z.infer<typeof dynamicSchema>\n\n const { control, ...methods } = useForm({\n resolver: zodResolver(dynamicSchema),\n defaultValues,\n })\n\n const onSubmit = async (formData: InferredFormInputs) => {\n await baseSubmitHandler(formData, async payload => {\n const formValues = payload as StateTaxesFormValues\n const allRequirementSets = stateTaxRequirements.requirementSets ?? []\n const requirementSets = allRequirementSets\n .map((requirementSet, setIndex) => ({ requirementSet, setIndex }))\n .filter(({ requirementSet, setIndex }) => {\n if (!requirementSet.key) return false\n const requirementSetPath = getUniqueRhfKey(requirementSet, setIndex, allRequirementSets)\n return Boolean(payload[requirementSetPath])\n })\n .map(({ requirementSet, setIndex }) => {\n const requirementSetKey = requirementSet.key as string\n const requirementSetPath = getUniqueRhfKey(requirementSet, setIndex, allRequirementSets)\n const payloadSet = payload[requirementSetPath] as Record<string, unknown>\n const preparedRequirements = prepareRequirements(requirementSet.requirements ?? [])\n\n const applicableRequirements = preparedRequirements\n .map((req, index) => ({ req, index }))\n .filter(({ req }) => isRequirementApplicable(req, requirementSetPath, formValues))\n\n return {\n state,\n key: requirementSetKey,\n effectiveFrom: requirementSet.effectiveFrom,\n requirements: applicableRequirements.map(({ req, index }) => ({\n key: req.key as string,\n value: stringifyRequirementValue(\n payloadSet[getUniqueRhfKey(req, index, preparedRequirements)],\n ),\n })),\n }\n })\n await updateStateTax({\n request: {\n companyUuid: companyId,\n requestBody: { requirementSets },\n state,\n },\n })\n onEvent(componentEvents.COMPANY_STATE_TAX_UPDATED)\n })\n }\n\n const handleCancel = () => {\n onEvent(componentEvents.CANCEL)\n }\n\n return (\n <section className={className}>\n <FormProvider {...methods} control={control}>\n <HtmlForm onSubmit={methods.handleSubmit(onSubmit)}>\n <StateTaxesFormProvider\n value={{ stateTaxRequirements, isPending: isPendingUpdate, state, handleCancel }}\n >\n <Flex flexDirection=\"column\" gap={32}>\n {children ? (\n children\n ) : (\n <>\n <Head />\n <Form />\n <Actions />\n </>\n )}\n </Flex>\n </StateTaxesFormProvider>\n </HtmlForm>\n </FormProvider>\n </section>\n )\n}\n"],"names":["StateTaxesForm","props","jsx","BaseComponent","Root","companyId","state","className","children","useI18n","onEvent","baseSubmitHandler","useBase","t","useTranslation","data","useTaxRequirementsGetSuspense","stateTaxRequirements","updateStateTax","isPendingUpdate","useTaxRequirementsUpdateStateMutation","dynamicSchema","defaultValues","useMemo","schemaShape","values","requirementSets","requirementSet","index","requirementSetPath","getUniqueRhfKey","preparedRequirements","prepareRequirements","shape","defaults","buildRequirementSchema","z","control","methods","useForm","zodResolver","onSubmit","formData","payload","formValues","allRequirementSets","setIndex","requirementSetKey","payloadSet","applicableRequirements","req","isRequirementApplicable","stringifyRequirementValue","componentEvents","handleCancel","FormProvider","HtmlForm","StateTaxesFormProvider","Flex","jsxs","Fragment","Head","Form","Actions"],"mappings":"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"}
@@ -11,11 +11,10 @@ import "@gusto/embedded-api/models/errors/unprocessableentityerror";
11
11
  import "@gusto/embedded-api/models/errors/httpclienterrors";
12
12
  import "../../../../shared/constants.js";
13
13
  import "../../../../contexts/ComponentAdapter/useComponentContext.js";
14
- import "../../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
15
14
  import { createCompoundContext as t } from "../../../Base/createCompoundContext.js";
16
- const [d, u] = t("StateTaxesFormContext");
15
+ const [c, d] = t("StateTaxesFormContext");
17
16
  export {
18
- u as StateTaxesFormProvider,
19
- d as useStateTaxesForm
17
+ d as StateTaxesFormProvider,
18
+ c as useStateTaxesForm
20
19
  };
21
20
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesForm/context.ts"],"sourcesContent":["import type { TaxRequirementsState } from '@gusto/embedded-api/models/components/taxrequirementsstate'\nimport { createCompoundContext } from '@/components/Base'\n\ninterface StateTaxFormContext {\n isPending: boolean\n state: string\n stateTaxRequirements: TaxRequirementsState\n handleCancel: () => void\n}\n\nconst [useStateTaxesForm, StateTaxesFormProvider] =\n createCompoundContext<StateTaxFormContext>('StateTaxesFormContext')\n\nexport { useStateTaxesForm, StateTaxesFormProvider }\n"],"names":["useStateTaxesForm","StateTaxesFormProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;AAUA,MAAM,CAACA,GAAmBC,CAAsB,IAC9CC,EAA2C,uBAAuB;"}
1
+ {"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesForm/context.ts"],"sourcesContent":["import type { TaxRequirementsState } from '@gusto/embedded-api/models/components/taxrequirementsstate'\nimport { createCompoundContext } from '@/components/Base'\n\ninterface StateTaxFormContext {\n isPending: boolean\n state: string\n stateTaxRequirements: TaxRequirementsState\n handleCancel: () => void\n}\n\nconst [useStateTaxesForm, StateTaxesFormProvider] =\n createCompoundContext<StateTaxFormContext>('StateTaxesFormContext')\n\nexport { useStateTaxesForm, StateTaxesFormProvider }\n"],"names":["useStateTaxesForm","StateTaxesFormProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;AAUA,MAAM,CAACA,GAAmBC,CAAsB,IAC9CC,EAA2C,uBAAuB;"}
@@ -11,11 +11,10 @@ import "@gusto/embedded-api/models/errors/unprocessableentityerror";
11
11
  import "@gusto/embedded-api/models/errors/httpclienterrors";
12
12
  import "../../../../shared/constants.js";
13
13
  import "../../../../contexts/ComponentAdapter/useComponentContext.js";
14
- import "../../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
15
14
  import { createCompoundContext as t } from "../../../Base/createCompoundContext.js";
16
- const [d, u] = t("StateTaxesListContext");
15
+ const [c, d] = t("StateTaxesListContext");
17
16
  export {
18
- u as StateTaxesListProvider,
19
- d as useStateTaxesList
17
+ d as StateTaxesListProvider,
18
+ c as useStateTaxesList
20
19
  };
21
20
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesList/context.ts"],"sourcesContent":["import type { TaxRequirementStatesList } from '@gusto/embedded-api/models/components/taxrequirementstateslist'\nimport { createCompoundContext } from '@/components/Base'\n\ntype StateTaxesListContextType = {\n isPending: boolean\n stateTaxRequirements: TaxRequirementStatesList[]\n handleContinue: () => void\n handleChange: (state: string) => void\n handleManageRates: (state: string) => void\n}\n\nconst [useStateTaxesList, StateTaxesListProvider] =\n createCompoundContext<StateTaxesListContextType>('StateTaxesListContext')\n\nexport { useStateTaxesList, StateTaxesListProvider }\n"],"names":["useStateTaxesList","StateTaxesListProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;AAWA,MAAM,CAACA,GAAmBC,CAAsB,IAC9CC,EAAiD,uBAAuB;"}
1
+ {"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/StateTaxesList/context.ts"],"sourcesContent":["import type { TaxRequirementStatesList } from '@gusto/embedded-api/models/components/taxrequirementstateslist'\nimport { createCompoundContext } from '@/components/Base'\n\ntype StateTaxesListContextType = {\n isPending: boolean\n stateTaxRequirements: TaxRequirementStatesList[]\n handleContinue: () => void\n handleChange: (state: string) => void\n handleManageRates: (state: string) => void\n}\n\nconst [useStateTaxesList, StateTaxesListProvider] =\n createCompoundContext<StateTaxesListContextType>('StateTaxesListContext')\n\nexport { useStateTaxesList, StateTaxesListProvider }\n"],"names":["useStateTaxesList","StateTaxesListProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;AAWA,MAAM,CAACA,GAAmBC,CAAsB,IAC9CC,EAAiD,uBAAuB;"}
@@ -1,110 +1,114 @@
1
- import { jsx as s, jsxs as E } from "react/jsx-runtime";
2
- import { useState as z, useMemo as n, useEffect as V } from "react";
1
+ import { jsx as a, jsxs as j } from "react/jsx-runtime";
2
+ import { useState as z, useMemo as s, useEffect as V } from "react";
3
3
  import { useForm as H, FormProvider as I } from "react-hook-form";
4
4
  import { zodResolver as K } from "@hookform/resolvers/zod";
5
- import { z as h } from "zod";
6
- import { useTranslation as b } from "react-i18next";
5
+ import { z as b } from "zod";
6
+ import { useTranslation as y } from "react-i18next";
7
7
  import { buildRequirementSchema as M } from "../shared/buildRequirementSchema.js";
8
8
  import { RequirementFields as U } from "../shared/RequirementFields.js";
9
9
  import { getUniqueRhfKey as w } from "../shared/rhfKey.js";
10
10
  import { isRequirementApplicable as W } from "../shared/applicableIf.js";
11
- import { stringifyRequirementValue as Y } from "../shared/requirementValue.js";
12
- import { useTaxRateManagement as B } from "./context.js";
13
- import { Flex as G } from "../../../Common/Flex/Flex.js";
14
- import { useComponentContext as J } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
15
- import { useDateFormatter as N } from "../../../../hooks/useDateFormatter.js";
16
- import { SelectField as Q } from "../../../Common/Fields/SelectField/SelectField.js";
17
- function X(r) {
11
+ import { prepareRequirements as Y, isRequirementSetEditable as B } from "../shared/prepareRequirements.js";
12
+ import { stringifyRequirementValue as G } from "../shared/requirementValue.js";
13
+ import { useTaxRateManagement as J } from "./context.js";
14
+ import { Flex as N } from "../../../Common/Flex/Flex.js";
15
+ import { useComponentContext as Q } from "../../../../contexts/ComponentAdapter/useComponentContext.js";
16
+ import { useDateFormatter as X } from "../../../../hooks/useDateFormatter.js";
17
+ import { SelectField as Z } from "../../../Common/Fields/SelectField/SelectField.js";
18
+ function _(r) {
18
19
  if (r.length === 0) return null;
19
- const m = [...r].sort(
20
- (o, l) => (o.effectiveFrom ?? "").localeCompare(l.effectiveFrom ?? "")
20
+ const n = [...r].sort(
21
+ (o, m) => (o.effectiveFrom ?? "").localeCompare(m.effectiveFrom ?? "")
21
22
  );
22
- return m[m.length - 1] ?? null;
23
+ return n[n.length - 1] ?? null;
23
24
  }
24
- function de({ isOpen: r, state: m, group: o, onClose: l }) {
25
- const d = J(), R = N(), { t: i } = b("Company.StateTaxes", { keyPrefix: "manageRates" }), { t: y } = b("Company.StateTaxes", { keyPrefix: "form" }), { t: x } = b("common", { keyPrefix: "statesHash" }), { handleAddRate: q, isPendingUpdate: D } = B(), [k, F] = z(!1), t = n(() => X(o.candidateSets), [o.candidateSets]), c = n(
25
+ function he({ isOpen: r, state: n, group: o, onClose: m }) {
26
+ const u = Q(), g = X(), { t } = y("Company.StateTaxes", { keyPrefix: "manageRates" }), { t: F } = y("Company.StateTaxes", { keyPrefix: "form" }), { t: q } = y("common", { keyPrefix: "statesHash" }), { handleAddRate: x, isPendingUpdate: D } = J(), [k, v] = z(!1), i = s(() => _(o.candidateSets), [o.candidateSets]), l = s(
26
27
  () => o.candidateSets.map((e) => e.effectiveFrom).filter((e) => typeof e == "string").sort(),
27
28
  [o.candidateSets]
28
- ), { shape: v, defaults: g } = n(
29
- () => M(t?.requirements, y),
30
- [t, y]
31
- ), A = n(
32
- () => h.object({
33
- effectiveFrom: h.string().min(1),
34
- fields: h.object(v)
29
+ ), c = s(
30
+ () => Y(i?.requirements ?? []),
31
+ [i]
32
+ ), { shape: R, defaults: S } = s(
33
+ () => M(c, F),
34
+ [c, F]
35
+ ), A = s(
36
+ () => b.object({
37
+ effectiveFrom: b.string().min(1),
38
+ fields: b.object(R)
35
39
  }),
36
- [v]
37
- ), u = n(
40
+ [R]
41
+ ), p = s(
38
42
  () => ({
39
- effectiveFrom: t?.effectiveFrom ?? c[0] ?? "",
40
- fields: g
43
+ effectiveFrom: i?.effectiveFrom ?? l[0] ?? "",
44
+ fields: S
41
45
  }),
42
- [t, c, g]
43
- ), p = H({ resolver: K(A), defaultValues: u });
46
+ [i, l, S]
47
+ ), h = H({ resolver: K(A), defaultValues: p });
44
48
  V(() => {
45
- r && p.reset(u);
46
- }, [r, u]);
47
- const C = p.handleSubmit(async (e) => {
48
- if (!t?.key) return;
49
- const T = { fields: e.fields }, S = t.requirements ?? [], L = S.map((a, f) => ({ req: a, index: f })).filter(({ req: a }) => a.editable !== !1).filter(({ req: a }) => W(a, "fields", T));
50
- F(!0);
49
+ r && h.reset(p);
50
+ }, [r, p]);
51
+ const C = h.handleSubmit(async (e) => {
52
+ if (!i?.key) return;
53
+ const T = { fields: e.fields }, E = c.map((f, d) => ({ req: f, index: d })).filter(({ req: f }) => W(f, "fields", T));
54
+ v(!0);
51
55
  try {
52
- await q(
53
- t.key,
56
+ await x(
57
+ i.key,
54
58
  e.effectiveFrom,
55
- L.map(({ req: f, index: j }) => ({
56
- key: f.key,
57
- value: Y(e.fields[w(f, j, S)])
59
+ E.map(({ req: d, index: L }) => ({
60
+ key: d.key,
61
+ value: G(
62
+ e.fields[w(d, L, c)]
63
+ )
58
64
  }))
59
- ) && l();
65
+ ) && m();
60
66
  } finally {
61
- F(!1);
67
+ v(!1);
62
68
  }
63
- }), P = (t?.requirements ?? []).some(
64
- (e) => e.editable !== !1
65
- );
66
- return /* @__PURE__ */ s(
67
- d.Dialog,
69
+ }), P = B(i?.requirements ?? []);
70
+ return /* @__PURE__ */ a(
71
+ u.Dialog,
68
72
  {
69
73
  isOpen: r,
70
- onClose: l,
74
+ onClose: m,
71
75
  onPrimaryActionClick: () => {
72
76
  C();
73
77
  },
74
78
  isPrimaryActionLoading: k || D,
75
- primaryActionLabel: i("saveRateCta"),
76
- closeActionLabel: i("cancelCta"),
77
- title: i("addRateDialogTitle", {
78
- state: x(m)
79
+ primaryActionLabel: t("saveRateCta"),
80
+ closeActionLabel: t("cancelCta"),
81
+ title: t("addRateDialogTitle", {
82
+ state: q(n)
79
83
  }),
80
- children: /* @__PURE__ */ s(I, { ...p, children: /* @__PURE__ */ E(G, { flexDirection: "column", gap: 20, alignItems: "stretch", children: [
81
- /* @__PURE__ */ s(d.Text, { size: "sm", children: i("addRateDialogDescription") }),
82
- /* @__PURE__ */ s(
83
- Q,
84
+ children: /* @__PURE__ */ a(I, { ...h, children: /* @__PURE__ */ j(N, { flexDirection: "column", gap: 20, alignItems: "stretch", children: [
85
+ /* @__PURE__ */ a(u.Text, { size: "sm", children: t("addRateDialogDescription") }),
86
+ /* @__PURE__ */ a(
87
+ Z,
84
88
  {
85
89
  name: "effectiveFrom",
86
- label: i("effectiveDateLabel"),
87
- placeholder: i("effectiveDatePlaceholder"),
90
+ label: t("effectiveDateLabel"),
91
+ placeholder: t("effectiveDatePlaceholder"),
88
92
  isRequired: !0,
89
- isDisabled: c.length === 0,
90
- options: c.map((e) => ({
93
+ isDisabled: l.length === 0,
94
+ options: l.map((e) => ({
91
95
  value: e,
92
- label: R.formatLongWithYear(e)
96
+ label: g.formatLongWithYear(e)
93
97
  }))
94
98
  }
95
99
  ),
96
- P ? /* @__PURE__ */ s(
100
+ P ? /* @__PURE__ */ a(
97
101
  U,
98
102
  {
99
- requirements: t?.requirements,
103
+ requirements: i?.requirements,
100
104
  requirementSetKey: "fields"
101
105
  }
102
- ) : /* @__PURE__ */ s(d.Alert, { status: "info", label: i("noEditableFieldsTitle"), children: i("noEditableFieldsDescription") })
106
+ ) : /* @__PURE__ */ a(u.Alert, { status: "info", label: t("noEditableFieldsTitle"), children: t("noEditableFieldsDescription") })
103
107
  ] }) })
104
108
  }
105
109
  );
106
110
  }
107
111
  export {
108
- de as AddTaxRateDialog
112
+ he as AddTaxRateDialog
109
113
  };
110
114
  //# sourceMappingURL=AddTaxRateDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddTaxRateDialog.js","sources":["../../../../../src/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\nimport { useTranslation } from 'react-i18next'\nimport { buildRequirementSchema } from '../shared/buildRequirementSchema'\nimport { RequirementFields } from '../shared/RequirementFields'\nimport { getUniqueRhfKey } from '../shared/rhfKey'\nimport { isRequirementApplicable, type StateTaxesFormValues } from '../shared/applicableIf'\nimport { stringifyRequirementValue } from '../shared/requirementValue'\nimport { useTaxRateManagement, type TaxRateKeyGroup } from './context'\nimport { Flex, SelectField } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport type { STATES_ABBR } from '@/shared/constants'\n\ninterface AddTaxRateDialogProps {\n isOpen: boolean\n state: string\n group: TaxRateKeyGroup\n onClose: () => void\n}\n\nfunction latestSet(sets: TaxRateKeyGroup['candidateSets']) {\n if (sets.length === 0) return null\n const sorted = [...sets].sort((a, b) =>\n (a.effectiveFrom ?? '').localeCompare(b.effectiveFrom ?? ''),\n )\n return sorted[sorted.length - 1] ?? null\n}\n\n/** @internal */\nexport function AddTaxRateDialog({ isOpen, state, group, onClose }: AddTaxRateDialogProps) {\n const Components = useComponentContext()\n const dateFormatter = useDateFormatter()\n const { t } = useTranslation('Company.StateTaxes', { keyPrefix: 'manageRates' })\n const { t: tForm } = useTranslation('Company.StateTaxes', { keyPrefix: 'form' })\n const { t: statesHash } = useTranslation('common', { keyPrefix: 'statesHash' })\n const { handleAddRate, isPendingUpdate } = useTaxRateManagement()\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const templateSet = useMemo(() => latestSet(group.candidateSets), [group.candidateSets])\n\n const availableDates = useMemo(\n () =>\n group.candidateSets\n .map(candidate => candidate.effectiveFrom)\n .filter((date): date is string => typeof date === 'string')\n .sort(),\n [group.candidateSets],\n )\n\n const { shape, defaults } = useMemo(\n () => buildRequirementSchema(templateSet?.requirements, tForm),\n [templateSet, tForm],\n )\n\n const dynamicSchema = useMemo(\n () =>\n z.object({\n effectiveFrom: z.string().min(1),\n fields: z.object(shape),\n }),\n [shape],\n )\n\n type FormShape = z.infer<typeof dynamicSchema>\n\n const defaultValues = useMemo<FormShape>(\n () => ({\n effectiveFrom: templateSet?.effectiveFrom ?? availableDates[0] ?? '',\n fields: defaults,\n }),\n [templateSet, availableDates, defaults],\n )\n\n const methods = useForm<FormShape>({ resolver: zodResolver(dynamicSchema), defaultValues })\n\n useEffect(() => {\n if (isOpen) methods.reset(defaultValues)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen, defaultValues])\n\n const handleSubmit = methods.handleSubmit(async data => {\n if (!templateSet?.key) return\n const formValues: StateTaxesFormValues = { fields: data.fields }\n const requirements = templateSet.requirements ?? []\n const applicableRequirements = requirements\n .map((req, index) => ({ req, index }))\n .filter(({ req }) => req.editable !== false)\n .filter(({ req }) => isRequirementApplicable(req, 'fields', formValues))\n\n setIsSubmitting(true)\n try {\n const success = await handleAddRate(\n templateSet.key,\n data.effectiveFrom,\n applicableRequirements.map(({ req, index }) => ({\n key: req.key as string,\n value: stringifyRequirementValue(data.fields[getUniqueRhfKey(req, index, requirements)]),\n })),\n )\n if (success) onClose()\n } finally {\n setIsSubmitting(false)\n }\n })\n\n const hasEditableFields = (templateSet?.requirements ?? []).some(\n requirement => requirement.editable !== false,\n )\n\n return (\n <Components.Dialog\n isOpen={isOpen}\n onClose={onClose}\n onPrimaryActionClick={() => {\n void handleSubmit()\n }}\n isPrimaryActionLoading={isSubmitting || isPendingUpdate}\n primaryActionLabel={t('saveRateCta')}\n closeActionLabel={t('cancelCta')}\n title={t('addRateDialogTitle', {\n state: statesHash(state as (typeof STATES_ABBR)[number]),\n })}\n >\n <FormProvider {...methods}>\n <Flex flexDirection=\"column\" gap={20} alignItems=\"stretch\">\n <Components.Text size=\"sm\">{t('addRateDialogDescription')}</Components.Text>\n <SelectField\n name=\"effectiveFrom\"\n label={t('effectiveDateLabel')}\n placeholder={t('effectiveDatePlaceholder')}\n isRequired\n isDisabled={availableDates.length === 0}\n options={availableDates.map(date => ({\n value: date,\n label: dateFormatter.formatLongWithYear(date),\n }))}\n />\n {hasEditableFields ? (\n <RequirementFields\n requirements={templateSet?.requirements}\n requirementSetKey=\"fields\"\n />\n ) : (\n <Components.Alert status=\"info\" label={t('noEditableFieldsTitle')}>\n {t('noEditableFieldsDescription')}\n </Components.Alert>\n )}\n </Flex>\n </FormProvider>\n </Components.Dialog>\n )\n}\n"],"names":["latestSet","sets","sorted","a","b","AddTaxRateDialog","isOpen","state","group","onClose","Components","useComponentContext","dateFormatter","useDateFormatter","t","useTranslation","tForm","statesHash","handleAddRate","isPendingUpdate","useTaxRateManagement","isSubmitting","setIsSubmitting","useState","templateSet","useMemo","availableDates","candidate","date","shape","defaults","buildRequirementSchema","dynamicSchema","z","defaultValues","methods","useForm","zodResolver","useEffect","handleSubmit","data","formValues","requirements","applicableRequirements","req","index","isRequirementApplicable","stringifyRequirementValue","getUniqueRhfKey","hasEditableFields","requirement","jsx","FormProvider","jsxs","Flex","SelectField","RequirementFields"],"mappings":";;;;;;;;;;;;;;;;AAuBA,SAASA,EAAUC,GAAwC;AACzD,MAAIA,EAAK,WAAW,EAAG,QAAO;AAC9B,QAAMC,IAAS,CAAC,GAAGD,CAAI,EAAE;AAAA,IAAK,CAACE,GAAGC,OAC/BD,EAAE,iBAAiB,IAAI,cAAcC,EAAE,iBAAiB,EAAE;AAAA,EAAA;AAE7D,SAAOF,EAAOA,EAAO,SAAS,CAAC,KAAK;AACtC;AAGO,SAASG,GAAiB,EAAE,QAAAC,GAAQ,OAAAC,GAAO,OAAAC,GAAO,SAAAC,KAAkC;AACzF,QAAMC,IAAaC,EAAA,GACbC,IAAgBC,EAAA,GAChB,EAAE,GAAAC,MAAMC,EAAe,sBAAsB,EAAE,WAAW,eAAe,GACzE,EAAE,GAAGC,MAAUD,EAAe,sBAAsB,EAAE,WAAW,QAAQ,GACzE,EAAE,GAAGE,MAAeF,EAAe,UAAU,EAAE,WAAW,cAAc,GACxE,EAAE,eAAAG,GAAe,iBAAAC,EAAA,IAAoBC,EAAA,GACrC,CAACC,GAAcC,CAAe,IAAIC,EAAS,EAAK,GAEhDC,IAAcC,EAAQ,MAAMzB,EAAUQ,EAAM,aAAa,GAAG,CAACA,EAAM,aAAa,CAAC,GAEjFkB,IAAiBD;AAAA,IACrB,MACEjB,EAAM,cACH,IAAI,OAAamB,EAAU,aAAa,EACxC,OAAO,CAACC,MAAyB,OAAOA,KAAS,QAAQ,EACzD,KAAA;AAAA,IACL,CAACpB,EAAM,aAAa;AAAA,EAAA,GAGhB,EAAE,OAAAqB,GAAO,UAAAC,EAAA,IAAaL;AAAA,IAC1B,MAAMM,EAAuBP,GAAa,cAAcR,CAAK;AAAA,IAC7D,CAACQ,GAAaR,CAAK;AAAA,EAAA,GAGfgB,IAAgBP;AAAA,IACpB,MACEQ,EAAE,OAAO;AAAA,MACP,eAAeA,EAAE,SAAS,IAAI,CAAC;AAAA,MAC/B,QAAQA,EAAE,OAAOJ,CAAK;AAAA,IAAA,CACvB;AAAA,IACH,CAACA,CAAK;AAAA,EAAA,GAKFK,IAAgBT;AAAA,IACpB,OAAO;AAAA,MACL,eAAeD,GAAa,iBAAiBE,EAAe,CAAC,KAAK;AAAA,MAClE,QAAQI;AAAA,IAAA;AAAA,IAEV,CAACN,GAAaE,GAAgBI,CAAQ;AAAA,EAAA,GAGlCK,IAAUC,EAAmB,EAAE,UAAUC,EAAYL,CAAa,GAAG,eAAAE,GAAe;AAE1F,EAAAI,EAAU,MAAM;AACd,IAAIhC,KAAQ6B,EAAQ,MAAMD,CAAa;AAAA,EAEzC,GAAG,CAAC5B,GAAQ4B,CAAa,CAAC;AAE1B,QAAMK,IAAeJ,EAAQ,aAAa,OAAMK,MAAQ;AACtD,QAAI,CAAChB,GAAa,IAAK;AACvB,UAAMiB,IAAmC,EAAE,QAAQD,EAAK,OAAA,GAClDE,IAAelB,EAAY,gBAAgB,CAAA,GAC3CmB,IAAyBD,EAC5B,IAAI,CAACE,GAAKC,OAAW,EAAE,KAAAD,GAAK,OAAAC,EAAA,EAAQ,EACpC,OAAO,CAAC,EAAE,KAAAD,EAAA,MAAUA,EAAI,aAAa,EAAK,EAC1C,OAAO,CAAC,EAAE,KAAAA,EAAA,MAAUE,EAAwBF,GAAK,UAAUH,CAAU,CAAC;AAEzE,IAAAnB,EAAgB,EAAI;AACpB,QAAI;AASF,MARgB,MAAMJ;AAAA,QACpBM,EAAY;AAAA,QACZgB,EAAK;AAAA,QACLG,EAAuB,IAAI,CAAC,EAAE,KAAAC,GAAK,OAAAC,SAAa;AAAA,UAC9C,KAAKD,EAAI;AAAA,UACT,OAAOG,EAA0BP,EAAK,OAAOQ,EAAgBJ,GAAKC,GAAOH,CAAY,CAAC,CAAC;AAAA,QAAA,EACvF;AAAA,MAAA,KAESjC,EAAA;AAAA,IACf,UAAA;AACE,MAAAa,EAAgB,EAAK;AAAA,IACvB;AAAA,EACF,CAAC,GAEK2B,KAAqBzB,GAAa,gBAAgB,CAAA,GAAI;AAAA,IAC1D,CAAA0B,MAAeA,EAAY,aAAa;AAAA,EAAA;AAG1C,SACE,gBAAAC;AAAA,IAACzC,EAAW;AAAA,IAAX;AAAA,MACC,QAAAJ;AAAA,MACA,SAAAG;AAAA,MACA,sBAAsB,MAAM;AAC1B,QAAK8B,EAAA;AAAA,MACP;AAAA,MACA,wBAAwBlB,KAAgBF;AAAA,MACxC,oBAAoBL,EAAE,aAAa;AAAA,MACnC,kBAAkBA,EAAE,WAAW;AAAA,MAC/B,OAAOA,EAAE,sBAAsB;AAAA,QAC7B,OAAOG,EAAWV,CAAqC;AAAA,MAAA,CACxD;AAAA,MAED,UAAA,gBAAA4C,EAACC,GAAA,EAAc,GAAGjB,GAChB,UAAA,gBAAAkB,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAAI,YAAW,WAC/C,UAAA;AAAA,QAAA,gBAAAH,EAACzC,EAAW,MAAX,EAAgB,MAAK,MAAM,UAAAI,EAAE,0BAA0B,GAAE;AAAA,QAC1D,gBAAAqC;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAOzC,EAAE,oBAAoB;AAAA,YAC7B,aAAaA,EAAE,0BAA0B;AAAA,YACzC,YAAU;AAAA,YACV,YAAYY,EAAe,WAAW;AAAA,YACtC,SAASA,EAAe,IAAI,CAAAE,OAAS;AAAA,cACnC,OAAOA;AAAA,cACP,OAAOhB,EAAc,mBAAmBgB,CAAI;AAAA,YAAA,EAC5C;AAAA,UAAA;AAAA,QAAA;AAAA,QAEHqB,IACC,gBAAAE;AAAA,UAACK;AAAA,UAAA;AAAA,YACC,cAAchC,GAAa;AAAA,YAC3B,mBAAkB;AAAA,UAAA;AAAA,QAAA,IAGpB,gBAAA2B,EAACzC,EAAW,OAAX,EAAiB,QAAO,QAAO,OAAOI,EAAE,uBAAuB,GAC7D,UAAAA,EAAE,6BAA6B,EAAA,CAClC;AAAA,MAAA,EAAA,CAEJ,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;"}
1
+ {"version":3,"file":"AddTaxRateDialog.js","sources":["../../../../../src/components/Company/StateTaxes/TaxRateManagement/AddTaxRateDialog.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { FormProvider, useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\nimport { useTranslation } from 'react-i18next'\nimport { buildRequirementSchema } from '../shared/buildRequirementSchema'\nimport { RequirementFields } from '../shared/RequirementFields'\nimport { getUniqueRhfKey } from '../shared/rhfKey'\nimport { isRequirementApplicable, type StateTaxesFormValues } from '../shared/applicableIf'\nimport { isRequirementSetEditable, prepareRequirements } from '../shared/prepareRequirements'\nimport { stringifyRequirementValue } from '../shared/requirementValue'\nimport { useTaxRateManagement, type TaxRateKeyGroup } from './context'\nimport { Flex, SelectField } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\nimport type { STATES_ABBR } from '@/shared/constants'\n\ninterface AddTaxRateDialogProps {\n isOpen: boolean\n state: string\n group: TaxRateKeyGroup\n onClose: () => void\n}\n\nfunction latestSet(sets: TaxRateKeyGroup['candidateSets']) {\n if (sets.length === 0) return null\n const sorted = [...sets].sort((a, b) =>\n (a.effectiveFrom ?? '').localeCompare(b.effectiveFrom ?? ''),\n )\n return sorted[sorted.length - 1] ?? null\n}\n\n/** @internal */\nexport function AddTaxRateDialog({ isOpen, state, group, onClose }: AddTaxRateDialogProps) {\n const Components = useComponentContext()\n const dateFormatter = useDateFormatter()\n const { t } = useTranslation('Company.StateTaxes', { keyPrefix: 'manageRates' })\n const { t: tForm } = useTranslation('Company.StateTaxes', { keyPrefix: 'form' })\n const { t: statesHash } = useTranslation('common', { keyPrefix: 'statesHash' })\n const { handleAddRate, isPendingUpdate } = useTaxRateManagement()\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n const templateSet = useMemo(() => latestSet(group.candidateSets), [group.candidateSets])\n\n const availableDates = useMemo(\n () =>\n group.candidateSets\n .map(candidate => candidate.effectiveFrom)\n .filter((date): date is string => typeof date === 'string')\n .sort(),\n [group.candidateSets],\n )\n\n const preparedRequirements = useMemo(\n () => prepareRequirements(templateSet?.requirements ?? []),\n [templateSet],\n )\n\n const { shape, defaults } = useMemo(\n () => buildRequirementSchema(preparedRequirements, tForm),\n [preparedRequirements, tForm],\n )\n\n const dynamicSchema = useMemo(\n () =>\n z.object({\n effectiveFrom: z.string().min(1),\n fields: z.object(shape),\n }),\n [shape],\n )\n\n type FormShape = z.infer<typeof dynamicSchema>\n\n const defaultValues = useMemo<FormShape>(\n () => ({\n effectiveFrom: templateSet?.effectiveFrom ?? availableDates[0] ?? '',\n fields: defaults,\n }),\n [templateSet, availableDates, defaults],\n )\n\n const methods = useForm<FormShape>({ resolver: zodResolver(dynamicSchema), defaultValues })\n\n useEffect(() => {\n if (isOpen) methods.reset(defaultValues)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen, defaultValues])\n\n const handleSubmit = methods.handleSubmit(async data => {\n if (!templateSet?.key) return\n const formValues: StateTaxesFormValues = { fields: data.fields }\n const applicableRequirements = preparedRequirements\n .map((req, index) => ({ req, index }))\n .filter(({ req }) => isRequirementApplicable(req, 'fields', formValues))\n\n setIsSubmitting(true)\n try {\n const success = await handleAddRate(\n templateSet.key,\n data.effectiveFrom,\n applicableRequirements.map(({ req, index }) => ({\n key: req.key as string,\n value: stringifyRequirementValue(\n data.fields[getUniqueRhfKey(req, index, preparedRequirements)],\n ),\n })),\n )\n if (success) onClose()\n } finally {\n setIsSubmitting(false)\n }\n })\n\n const hasEditableFields = isRequirementSetEditable(templateSet?.requirements ?? [])\n\n return (\n <Components.Dialog\n isOpen={isOpen}\n onClose={onClose}\n onPrimaryActionClick={() => {\n void handleSubmit()\n }}\n isPrimaryActionLoading={isSubmitting || isPendingUpdate}\n primaryActionLabel={t('saveRateCta')}\n closeActionLabel={t('cancelCta')}\n title={t('addRateDialogTitle', {\n state: statesHash(state as (typeof STATES_ABBR)[number]),\n })}\n >\n <FormProvider {...methods}>\n <Flex flexDirection=\"column\" gap={20} alignItems=\"stretch\">\n <Components.Text size=\"sm\">{t('addRateDialogDescription')}</Components.Text>\n <SelectField\n name=\"effectiveFrom\"\n label={t('effectiveDateLabel')}\n placeholder={t('effectiveDatePlaceholder')}\n isRequired\n isDisabled={availableDates.length === 0}\n options={availableDates.map(date => ({\n value: date,\n label: dateFormatter.formatLongWithYear(date),\n }))}\n />\n {hasEditableFields ? (\n <RequirementFields\n requirements={templateSet?.requirements}\n requirementSetKey=\"fields\"\n />\n ) : (\n <Components.Alert status=\"info\" label={t('noEditableFieldsTitle')}>\n {t('noEditableFieldsDescription')}\n </Components.Alert>\n )}\n </Flex>\n </FormProvider>\n </Components.Dialog>\n )\n}\n"],"names":["latestSet","sets","sorted","a","b","AddTaxRateDialog","isOpen","state","group","onClose","Components","useComponentContext","dateFormatter","useDateFormatter","useTranslation","tForm","statesHash","handleAddRate","isPendingUpdate","useTaxRateManagement","isSubmitting","setIsSubmitting","useState","templateSet","useMemo","availableDates","candidate","date","preparedRequirements","prepareRequirements","shape","defaults","buildRequirementSchema","dynamicSchema","z","defaultValues","methods","useForm","zodResolver","useEffect","handleSubmit","data","formValues","applicableRequirements","req","index","isRequirementApplicable","stringifyRequirementValue","getUniqueRhfKey","hasEditableFields","isRequirementSetEditable","jsx","FormProvider","jsxs","Flex","SelectField","RequirementFields"],"mappings":"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"}
@@ -11,11 +11,10 @@ import "@gusto/embedded-api/models/errors/unprocessableentityerror";
11
11
  import "@gusto/embedded-api/models/errors/httpclienterrors";
12
12
  import "../../../../shared/constants.js";
13
13
  import "../../../../contexts/ComponentAdapter/useComponentContext.js";
14
- import "../../../../contexts/LoadingIndicatorProvider/useLoadingIndicator.js";
15
14
  import { createCompoundContext as t } from "../../../Base/createCompoundContext.js";
16
- const [d, s] = t("TaxRateManagementContext");
15
+ const [c, d] = t("TaxRateManagementContext");
17
16
  export {
18
- s as TaxRateManagementProvider,
19
- d as useTaxRateManagement
17
+ d as TaxRateManagementProvider,
18
+ c as useTaxRateManagement
20
19
  };
21
20
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/TaxRateManagement/context.ts"],"sourcesContent":["import type { TaxRequirementSet } from '@gusto/embedded-api/models/components/taxrequirementset'\nimport { createCompoundContext } from '@/components/Base'\n\n/**\n * A state's effective-dated requirement sets for a single key, grouped for history display,\n * plus any future-dated candidate sets available to schedule against.\n *\n * @internal\n */\nexport interface TaxRateKeyGroup {\n key: string\n label?: string\n sets: TaxRequirementSet[]\n candidateSets: TaxRequirementSet[]\n}\n\ninterface TaxRateManagementContextType {\n state: string\n groups: TaxRateKeyGroup[]\n isPendingUpdate: boolean\n handleCancel: () => void\n handleAddRate: (\n key: string,\n effectiveFrom: string,\n requirements: { key: string; value: string }[],\n ) => Promise<boolean>\n}\n\nconst [useTaxRateManagement, TaxRateManagementProvider] =\n createCompoundContext<TaxRateManagementContextType>('TaxRateManagementContext')\n\nexport { useTaxRateManagement, TaxRateManagementProvider }\n"],"names":["useTaxRateManagement","TaxRateManagementProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;;AA4BA,MAAM,CAACA,GAAsBC,CAAyB,IACpDC,EAAoD,0BAA0B;"}
1
+ {"version":3,"file":"context.js","sources":["../../../../../src/components/Company/StateTaxes/TaxRateManagement/context.ts"],"sourcesContent":["import type { TaxRequirementSet } from '@gusto/embedded-api/models/components/taxrequirementset'\nimport { createCompoundContext } from '@/components/Base'\n\n/**\n * A state's effective-dated requirement sets for a single key, grouped for history display,\n * plus any future-dated candidate sets available to schedule against.\n *\n * @internal\n */\nexport interface TaxRateKeyGroup {\n key: string\n label?: string\n sets: TaxRequirementSet[]\n candidateSets: TaxRequirementSet[]\n}\n\ninterface TaxRateManagementContextType {\n state: string\n groups: TaxRateKeyGroup[]\n isPendingUpdate: boolean\n handleCancel: () => void\n handleAddRate: (\n key: string,\n effectiveFrom: string,\n requirements: { key: string; value: string }[],\n ) => Promise<boolean>\n}\n\nconst [useTaxRateManagement, TaxRateManagementProvider] =\n createCompoundContext<TaxRateManagementContextType>('TaxRateManagementContext')\n\nexport { useTaxRateManagement, TaxRateManagementProvider }\n"],"names":["useTaxRateManagement","TaxRateManagementProvider","createCompoundContext"],"mappings":";;;;;;;;;;;;;;AA4BA,MAAM,CAACA,GAAsBC,CAAyB,IACpDC,EAAoD,0BAA0B;"}