@gusto/embedded-react-sdk 0.56.2 → 0.56.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 (154) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/components/Common/FieldCaption/FieldCaption.js +19 -22
  3. package/dist/components/Common/FieldCaption/FieldCaption.js.map +1 -1
  4. package/dist/components/Common/FieldCaption/FieldCaption.module.scss.js +6 -6
  5. package/dist/components/Common/PaginationControl/PaginationControl.js +66 -62
  6. package/dist/components/Common/PaginationControl/PaginationControl.js.map +1 -1
  7. package/dist/components/Common/UI/Breadcrumbs/Breadcrumbs.js +1 -1
  8. package/dist/components/Common/UI/FileInput/FileInput.js +1 -1
  9. package/dist/components/Common/UI/ProgressBar/ProgressBar.js +4 -4
  10. package/dist/components/Company/PaySchedule/management/PaySchedule.js +60 -0
  11. package/dist/components/Company/PaySchedule/management/PaySchedule.js.map +1 -0
  12. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentReviewStepPresentation.js +67 -0
  13. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentReviewStepPresentation.js.map +1 -0
  14. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js +59 -0
  15. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.js.map +1 -0
  16. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js +57 -0
  17. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.js.map +1 -0
  18. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js +46 -0
  19. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.js.map +1 -0
  20. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js +101 -0
  21. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.js.map +1 -0
  22. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js +81 -0
  23. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.js.map +1 -0
  24. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/stripNullAssignmentPreviewFields.js +18 -0
  25. package/dist/components/Company/PaySchedule/management/PayScheduleAssignment/stripNullAssignmentPreviewFields.js.map +1 -0
  26. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js +56 -0
  27. package/dist/components/Company/PaySchedule/management/PayScheduleManagementComponents.js.map +1 -0
  28. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js +34 -0
  29. package/dist/components/Company/PaySchedule/management/PayScheduleOverview.js.map +1 -0
  30. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js +77 -0
  31. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.js.map +1 -0
  32. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.module.scss.js +10 -0
  33. package/dist/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.module.scss.js.map +1 -0
  34. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js +66 -0
  35. package/dist/components/Company/PaySchedule/management/payScheduleManagementStateMachine.js.map +1 -0
  36. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js +75 -57
  37. package/dist/components/Company/StateTaxes/StateTaxesForm/StateTaxesForm.js.map +1 -1
  38. package/dist/components/Company/StateTaxes/shared/requirementSetError.js +15 -0
  39. package/dist/components/Company/StateTaxes/shared/requirementSetError.js.map +1 -0
  40. package/dist/components/Company/exports/companyManagement.js +7 -0
  41. package/dist/components/Company/exports/companyManagement.js.map +1 -0
  42. package/dist/components/Employee/FederalTaxes/shared/FederalTaxesView.js +1 -1
  43. package/dist/components/Employee/PaymentMethod/management/PaymentMethodBankForm.js +4 -4
  44. package/dist/components/Employee/PaymentMethod/onboarding/BankForm.js +4 -4
  45. package/dist/components/Flow/Flow.js +1 -1
  46. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js +28 -28
  47. package/dist/components/Payroll/GrossUpModal/GrossUpModal.js.map +1 -1
  48. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js +51 -58
  49. package/dist/components/Payroll/PayrollBlocker/components/PayrollBlockerList.js.map +1 -1
  50. package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js +12 -7
  51. package/dist/components/Payroll/PayrollBlocker/payrollHelpers.js.map +1 -1
  52. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js +87 -85
  53. package/dist/components/Payroll/PayrollConfiguration/PayrollConfiguration.js.map +1 -1
  54. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js +1 -1
  55. package/dist/components/Payroll/PayrollConfiguration/PayrollConfigurationPresentation.js.map +1 -1
  56. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js +55 -54
  57. package/dist/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.js.map +1 -1
  58. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js +66 -62
  59. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployee.js.map +1 -1
  60. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js +129 -125
  61. package/dist/components/Payroll/PayrollEditEmployee/PayrollEditEmployeePresentation.js.map +1 -1
  62. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js +30 -27
  63. package/dist/components/Payroll/PayrollEditEmployee/TimeOffField.js.map +1 -1
  64. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js +41 -30
  65. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/fields.js.map +1 -1
  66. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.js.map +1 -1
  67. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js +159 -152
  68. package/dist/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/usePayrollEditEmployeeForm.js.map +1 -1
  69. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js +61 -59
  70. package/dist/components/Payroll/PayrollHistory/PayrollHistoryPresentation.js.map +1 -1
  71. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js +32 -31
  72. package/dist/components/Payroll/PayrollLanding/PayrollLandingFlowComponents.js.map +1 -1
  73. package/dist/components/Payroll/PayrollList/PayrollList.js +16 -16
  74. package/dist/components/Payroll/PayrollList/PayrollList.js.map +1 -1
  75. package/dist/components/Payroll/PayrollList/PayrollListPresentation.js.map +1 -1
  76. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js +61 -61
  77. package/dist/components/Payroll/PayrollOverview/PayrollOverview.js.map +1 -1
  78. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js +192 -193
  79. package/dist/components/Payroll/PayrollOverview/PayrollOverviewPresentation.js.map +1 -1
  80. package/dist/components/Payroll/Transition/TransitionFlow.js +27 -22
  81. package/dist/components/Payroll/Transition/TransitionFlow.js.map +1 -1
  82. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js +55 -53
  83. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.js.map +1 -1
  84. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js +44 -41
  85. package/dist/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.js.map +1 -1
  86. package/dist/components/Payroll/helpers.js +72 -67
  87. package/dist/components/Payroll/helpers.js.map +1 -1
  88. package/dist/components/Payroll/usePreparedPayrollData.js +34 -25
  89. package/dist/components/Payroll/usePreparedPayrollData.js.map +1 -1
  90. package/dist/contexts/ApiProvider/ApiProvider.js +23 -22
  91. package/dist/contexts/ApiProvider/ApiProvider.js.map +1 -1
  92. package/dist/contexts/ApiProvider/informationRequestEnumHook.js +30 -0
  93. package/dist/contexts/ApiProvider/informationRequestEnumHook.js.map +1 -0
  94. package/dist/contexts/UnstableFeaturesProvider/useUnstableFeature.js.map +1 -1
  95. package/dist/helpers/dateFormatting.js.map +1 -1
  96. package/dist/helpers/formattedStrings.js +9 -8
  97. package/dist/helpers/formattedStrings.js.map +1 -1
  98. package/dist/i18n/I18n.js +2 -0
  99. package/dist/i18n/I18n.js.map +1 -1
  100. package/dist/i18n/en/Company.Management.PaySchedule.json.js +24 -0
  101. package/dist/i18n/en/Company.Management.PaySchedule.json.js.map +1 -0
  102. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js +18 -0
  103. package/dist/i18n/en/Company.Management.PayScheduleAssignment.json.js.map +1 -0
  104. package/dist/i18n/en/Company.StateTaxes.json.js +1 -1
  105. package/dist/i18n/en/Payroll.GrossUpModal.json.js +12 -14
  106. package/dist/i18n/en/Payroll.GrossUpModal.json.js.map +1 -1
  107. package/dist/i18n/en/Payroll.PayrollOverview.json.js +1 -1
  108. package/dist/i18n/en/common.json.js +36 -38
  109. package/dist/i18n/en/common.json.js.map +1 -1
  110. package/dist/index.js +137 -135
  111. package/dist/index.js.map +1 -1
  112. package/dist/package.json.js +1 -1
  113. package/dist/shared/constants.js +39 -31
  114. package/dist/shared/constants.js.map +1 -1
  115. package/dist/src/components/Company/PaySchedule/management/PaySchedule.d.ts +24 -0
  116. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentReviewStepPresentation.d.ts +10 -0
  117. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.d.ts +11 -0
  118. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentTypeStepPresentation.d.ts +9 -0
  119. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignment.d.ts +35 -0
  120. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/PayScheduleAssignmentComponents.d.ts +29 -0
  121. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/index.d.ts +1 -0
  122. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/payScheduleAssignmentStateMachine.d.ts +7 -0
  123. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/stripNullAssignmentPreviewFields.d.ts +12 -0
  124. package/dist/src/components/Company/PaySchedule/management/PayScheduleAssignment/usePayScheduleAssignment.d.ts +9 -0
  125. package/dist/src/components/Company/PaySchedule/management/PayScheduleManagementComponents.d.ts +20 -0
  126. package/dist/src/components/Company/PaySchedule/management/PayScheduleOverview.d.ts +11 -0
  127. package/dist/src/components/Company/PaySchedule/management/PayScheduleOverviewPresentation.d.ts +18 -0
  128. package/dist/src/components/Company/PaySchedule/management/index.d.ts +1 -0
  129. package/dist/src/components/Company/PaySchedule/management/payScheduleManagementStateMachine.d.ts +12 -0
  130. package/dist/src/components/Company/StateTaxes/shared/requirementSetError.d.ts +18 -0
  131. package/dist/src/components/Company/StateTaxes/shared/requirementSetError.test.d.ts +1 -0
  132. package/dist/src/components/Company/exports/companyManagement.d.ts +2 -0
  133. package/dist/src/components/Payroll/PayrollBlocker/payrollHelpers.d.ts +12 -0
  134. package/dist/src/components/Payroll/PayrollConfiguration/usePayrollConfigurationData.d.ts +6 -1
  135. package/dist/src/components/Payroll/PayrollEditEmployee/shared/usePayrollEditEmployeeForm/payrollEditEmployeeHelpers.d.ts +2 -2
  136. package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlert.d.ts +6 -1
  137. package/dist/src/components/Payroll/TransitionPayrollAlert/TransitionPayrollAlertPresentation.d.ts +7 -1
  138. package/dist/src/components/Payroll/helpers.d.ts +34 -0
  139. package/dist/src/components/Payroll/usePreparedPayrollData.d.ts +6 -1
  140. package/dist/src/components/index.d.ts +12 -0
  141. package/dist/src/contexts/ApiProvider/informationRequestEnumHook.d.ts +14 -0
  142. package/dist/src/contexts/ApiProvider/informationRequestEnumHook.test.d.ts +1 -0
  143. package/dist/src/contexts/UnstableFeaturesProvider/useUnstableFeature.d.ts +2 -0
  144. package/dist/src/helpers/dateFormatting.d.ts +2 -2
  145. package/dist/src/helpers/formattedStrings.d.ts +15 -0
  146. package/dist/src/i18n/en/common.json.d.ts +0 -1
  147. package/dist/src/i18n/types.d.ts +96 -6
  148. package/dist/src/models/external.d.ts +12 -0
  149. package/dist/src/shared/constants.d.ts +16 -0
  150. package/dist/style.css +1 -1
  151. package/dist/types/sdkError.js +32 -21
  152. package/dist/types/sdkError.js.map +1 -1
  153. package/docs/guides/endpoint-inventory.json +59 -10
  154. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.56.4](https://github.com/Gusto/embedded-react-sdk/compare/v0.56.3...v0.56.4) (2026-10-02)
4
+
5
+ ### Fixes
6
+
7
+ - Keep the required-field asterisk out of the field's accessible name, so screen readers no longer announce it as part of the label ([#2865](https://github.com/Gusto/embedded-react-sdk/issues/2865))
8
+
9
+ ## [0.56.3](https://github.com/Gusto/embedded-react-sdk/compare/v0.56.2...v0.56.3) (2026-10-01)
10
+
11
+ ### Features & Enhancements
12
+
13
+ - Mark required form fields with an asterisk (`*`) instead of appending an `(optional)` suffix to non-required fields. The asterisk is CSS-generated, so each field's accessible name is unchanged ([#2770](https://github.com/Gusto/embedded-react-sdk/issues/2770))
14
+ - Add the alpha `CompanyManagement.PaySchedule` component with `PayScheduleOverview`, surfacing a company's pay schedule name, frequency, and AutoPilot status. Gated behind the `managePaySchedules` unstable feature flag ([#2746](https://github.com/Gusto/embedded-react-sdk/issues/2746))
15
+ - Add the alpha `CompanyManagement.PayScheduleAssignment`, a standalone flow for assigning a single pay schedule (type selector, schedule picker with inline creation, and a review-and-submit step) that can be mounted directly or launched from `PayScheduleOverview` ([#2762](https://github.com/Gusto/embedded-react-sdk/issues/2762))
16
+
17
+ ### Fixes
18
+
19
+ - Update the bundled `@gusto/embedded-api` client to stable `0.3.1` ([#2863](https://github.com/Gusto/embedded-react-sdk/issues/2863))
20
+ - Handle Gusto-created tax reconciliation payrolls, which have no pay period and previously crashed `PayrollOverview` and left blank dates in `PayrollHistory` ([#2859](https://github.com/Gusto/embedded-react-sdk/issues/2859))
21
+ - Prepare transition payrolls without sending an employee roster, which the API rejects for a transition payroll ([#2850](https://github.com/Gusto/embedded-react-sdk/issues/2850))
22
+ - Disable transition payroll actions while a payroll blocker exists ([#2848](https://github.com/Gusto/embedded-react-sdk/issues/2848))
23
+ - Strip leading zeros from payroll number inputs ([#2831](https://github.com/Gusto/embedded-react-sdk/issues/2831))
24
+ - Stop the RFI payroll-blocker screen from crashing on unauthorized or unknown data ([#2833](https://github.com/Gusto/embedded-react-sdk/issues/2833))
25
+ - Fix the Calculate button loading state in the gross-up modal ([#2718](https://github.com/Gusto/embedded-react-sdk/issues/2718))
26
+ - Hide pagination page-size options that would render identically to a smaller one ([#2856](https://github.com/Gusto/embedded-react-sdk/issues/2856))
27
+ - Show a friendly message for incomplete state tax requirement sets ([#2829](https://github.com/Gusto/embedded-react-sdk/issues/2829))
28
+
29
+ ### Chores & Maintenance
30
+
31
+ - Bump dev dependencies (`typescript-eslint`, `dotenv`)
32
+ - Apply grouped Dependabot security updates ([#2837](https://github.com/Gusto/embedded-react-sdk/issues/2837), [#2838](https://github.com/Gusto/embedded-react-sdk/issues/2838))
33
+
3
34
  ## [0.56.2](https://github.com/Gusto/embedded-react-sdk/compare/v0.56.1...v0.56.2) (2026-09-25)
4
35
 
5
36
  ### Fixes
@@ -1,37 +1,34 @@
1
- import { jsx as n, jsxs as l } from "react/jsx-runtime";
2
- import { useTranslation as c } from "react-i18next";
1
+ import { jsx as e, jsxs as m } from "react/jsx-runtime";
3
2
  import d from "classnames";
4
- import s from "./FieldCaption.module.scss.js";
5
- import { useComponentContext as f } from "../../../contexts/ComponentAdapter/useComponentContext.js";
6
- import { VisuallyHidden as C } from "../VisuallyHidden/VisuallyHidden.js";
7
- const u = ({
3
+ import i from "./FieldCaption.module.scss.js";
4
+ import { useComponentContext as p } from "../../../contexts/ComponentAdapter/useComponentContext.js";
5
+ import { VisuallyHidden as c } from "../VisuallyHidden/VisuallyHidden.js";
6
+ const C = ({
8
7
  children: t,
9
8
  as: o = "label",
10
- htmlFor: i,
11
- isRequired: a = !1,
12
- isVisuallyHidden: m = !1,
13
- className: r
9
+ htmlFor: l,
10
+ isRequired: n = !1,
11
+ isVisuallyHidden: a = !1,
12
+ className: s
14
13
  }) => {
15
- const { t: p } = c("common"), e = /* @__PURE__ */ l(
14
+ const r = /* @__PURE__ */ m(
16
15
  o,
17
16
  {
18
- className: d(s.root, r),
19
- htmlFor: o === "label" ? i : void 0,
17
+ className: d(i.root, s),
18
+ htmlFor: o === "label" ? l : void 0,
19
+ "data-required": n || void 0,
20
20
  children: [
21
21
  t,
22
- !a && /* @__PURE__ */ l("span", { className: s.optionalLabel, children: [
23
- " ",
24
- p("optionalLabel")
25
- ] })
22
+ n ? /* @__PURE__ */ e("span", { "aria-hidden": "true", className: i.requiredIndicator }) : null
26
23
  ]
27
24
  }
28
25
  );
29
- return m ? /* @__PURE__ */ n(C, { children: e }) : e;
30
- }, L = (t) => {
31
- const o = f();
32
- return o.FieldCaption ? /* @__PURE__ */ n(o.FieldCaption, { ...t }) : /* @__PURE__ */ n(u, { ...t });
26
+ return a ? /* @__PURE__ */ e(c, { children: r }) : r;
27
+ }, b = (t) => {
28
+ const o = p();
29
+ return o.FieldCaption ? /* @__PURE__ */ e(o.FieldCaption, { ...t }) : /* @__PURE__ */ e(C, { ...t });
33
30
  };
34
31
  export {
35
- L as FieldCaption
32
+ b as FieldCaption
36
33
  };
37
34
  //# sourceMappingURL=FieldCaption.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldCaption.js","sources":["../../../../src/components/Common/FieldCaption/FieldCaption.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport classNames from 'classnames'\nimport { VisuallyHidden } from '../VisuallyHidden'\nimport type { FieldCaptionProps } from './FieldCaptionTypes'\nimport styles from './FieldCaption.module.scss'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\nconst DefaultFieldCaption = ({\n children,\n as = 'label',\n htmlFor,\n isRequired = false,\n isVisuallyHidden = false,\n className,\n}: FieldCaptionProps) => {\n const { t } = useTranslation('common')\n const Component = as\n\n const content = (\n <Component\n className={classNames(styles.root, className)}\n htmlFor={as === 'label' ? htmlFor : undefined}\n >\n {children}\n {!isRequired && <span className={styles.optionalLabel}> {t('optionalLabel')}</span>}\n </Component>\n )\n\n return isVisuallyHidden ? <VisuallyHidden>{content}</VisuallyHidden> : content\n}\n\n/** @internal */\nexport const FieldCaption = (props: FieldCaptionProps) => {\n const Components = useComponentContext()\n\n return Components.FieldCaption ? (\n <Components.FieldCaption {...props} />\n ) : (\n <DefaultFieldCaption {...props} />\n )\n}\n"],"names":["DefaultFieldCaption","children","as","htmlFor","isRequired","isVisuallyHidden","className","t","useTranslation","content","jsxs","classNames","styles","jsx","VisuallyHidden","FieldCaption","props","Components","useComponentContext"],"mappings":";;;;;;AAOA,MAAMA,IAAsB,CAAC;AAAA,EAC3B,UAAAC;AAAA,EACA,IAAAC,IAAK;AAAA,EACL,SAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,kBAAAC,IAAmB;AAAA,EACnB,WAAAC;AACF,MAAyB;AACvB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,QAAQ,GAG/BC,IACJ,gBAAAC;AAAA,IAHgBR;AAAA,IAGf;AAAA,MACC,WAAWS,EAAWC,EAAO,MAAMN,CAAS;AAAA,MAC5C,SAASJ,MAAO,UAAUC,IAAU;AAAA,MAEnC,UAAA;AAAA,QAAAF;AAAA,QACA,CAACG,KAAc,gBAAAM,EAAC,QAAA,EAAK,WAAWE,EAAO,eAAe,UAAA;AAAA,UAAA;AAAA,UAAEL,EAAE,eAAe;AAAA,QAAA,EAAA,CAAE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIhF,SAAOF,IAAmB,gBAAAQ,EAACC,GAAA,EAAgB,UAAAL,EAAA,CAAQ,IAAoBA;AACzE,GAGaM,IAAe,CAACC,MAA6B;AACxD,QAAMC,IAAaC,EAAA;AAEnB,SAAOD,EAAW,eAChB,gBAAAJ,EAACI,EAAW,cAAX,EAAyB,GAAGD,EAAA,CAAO,IAEpC,gBAAAH,EAACb,GAAA,EAAqB,GAAGgB,EAAA,CAAO;AAEpC;"}
1
+ {"version":3,"file":"FieldCaption.js","sources":["../../../../src/components/Common/FieldCaption/FieldCaption.tsx"],"sourcesContent":["import classNames from 'classnames'\nimport { VisuallyHidden } from '../VisuallyHidden'\nimport type { FieldCaptionProps } from './FieldCaptionTypes'\nimport styles from './FieldCaption.module.scss'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\nconst DefaultFieldCaption = ({\n children,\n as = 'label',\n htmlFor,\n isRequired = false,\n isVisuallyHidden = false,\n className,\n}: FieldCaptionProps) => {\n const Component = as\n\n const content = (\n <Component\n className={classNames(styles.root, className)}\n htmlFor={as === 'label' ? htmlFor : undefined}\n data-required={isRequired || undefined}\n >\n {children}\n {isRequired ? <span aria-hidden=\"true\" className={styles.requiredIndicator} /> : null}\n </Component>\n )\n\n return isVisuallyHidden ? <VisuallyHidden>{content}</VisuallyHidden> : content\n}\n\n/** @internal */\nexport const FieldCaption = (props: FieldCaptionProps) => {\n const Components = useComponentContext()\n\n return Components.FieldCaption ? (\n <Components.FieldCaption {...props} />\n ) : (\n <DefaultFieldCaption {...props} />\n )\n}\n"],"names":["DefaultFieldCaption","children","as","htmlFor","isRequired","isVisuallyHidden","className","content","jsxs","classNames","styles","jsx","VisuallyHidden","FieldCaption","props","Components","useComponentContext"],"mappings":";;;;;AAMA,MAAMA,IAAsB,CAAC;AAAA,EAC3B,UAAAC;AAAA,EACA,IAAAC,IAAK;AAAA,EACL,SAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,kBAAAC,IAAmB;AAAA,EACnB,WAAAC;AACF,MAAyB;AAGvB,QAAMC,IACJ,gBAAAC;AAAA,IAHgBN;AAAA,IAGf;AAAA,MACC,WAAWO,EAAWC,EAAO,MAAMJ,CAAS;AAAA,MAC5C,SAASJ,MAAO,UAAUC,IAAU;AAAA,MACpC,iBAAeC,KAAc;AAAA,MAE5B,UAAA;AAAA,QAAAH;AAAA,QACAG,sBAAc,QAAA,EAAK,eAAY,QAAO,WAAWM,EAAO,mBAAmB,IAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIrF,SAAOL,IAAmB,gBAAAM,EAACC,GAAA,EAAgB,UAAAL,EAAA,CAAQ,IAAoBA;AACzE,GAGaM,IAAe,CAACC,MAA6B;AACxD,QAAMC,IAAaC,EAAA;AAEnB,SAAOD,EAAW,eAChB,gBAAAJ,EAACI,EAAW,cAAX,EAAyB,GAAGD,EAAA,CAAO,IAEpC,gBAAAH,EAACX,GAAA,EAAqB,GAAGc,EAAA,CAAO;AAEpC;"}
@@ -1,10 +1,10 @@
1
- const o = "_root_183ii_1", t = "_optionalLabel_183ii_10", a = {
2
- root: o,
3
- optionalLabel: t
1
+ const r = "_root_1jhri_2", o = "_requiredIndicator_1jhri_11", t = {
2
+ root: r,
3
+ requiredIndicator: o
4
4
  };
5
5
  export {
6
- a as default,
7
- t as optionalLabel,
8
- o as root
6
+ t as default,
7
+ o as requiredIndicator,
8
+ r as root
9
9
  };
10
10
  //# sourceMappingURL=FieldCaption.module.scss.js.map
@@ -1,90 +1,94 @@
1
- import { jsx as n, jsxs as l } from "react/jsx-runtime";
2
- import { useTranslation as f } from "react-i18next";
3
- import { Flex as h } from "../Flex/Flex.js";
4
- import e from "./PaginationControl.module.scss.js";
5
- import { useComponentContext as r } from "../../../contexts/ComponentAdapter/useComponentContext.js";
6
- import v from "../../../assets/icons/pagination_first.svg.js";
1
+ import { jsx as i, jsxs as p } from "react/jsx-runtime";
2
+ import { useTranslation as v } from "react-i18next";
3
+ import { Flex as C } from "../Flex/Flex.js";
4
+ import d from "./PaginationControl.module.scss.js";
5
+ import { useComponentContext as g } from "../../../contexts/ComponentAdapter/useComponentContext.js";
6
+ import S from "../../../assets/icons/pagination_first.svg.js";
7
7
  import I from "../../../assets/icons/pagination_previous.svg.js";
8
- import S from "../../../assets/icons/pagination_next.svg.js";
8
+ import P from "../../../assets/icons/pagination_next.svg.js";
9
9
  import x from "../../../assets/icons/pagination_last.svg.js";
10
- import { InlineSpinner as P } from "../InlineSpinner/InlineSpinner.js";
11
- const N = 5, L = (i) => i === void 0 ? !0 : i === 0 ? !1 : i > N, B = ({
12
- currentPage: i,
13
- totalPages: t,
14
- totalCount: s,
15
- isFetching: c,
16
- handleFirstPage: m,
17
- handlePreviousPage: p,
18
- handleNextPage: d,
19
- handleLastPage: u,
20
- handleItemsPerPageChange: g,
21
- itemsPerPage: b = 5
10
+ import { InlineSpinner as N } from "../InlineSpinner/InlineSpinner.js";
11
+ const L = 5, c = [5, 10, 25, 50], B = (n) => n === void 0 ? !0 : n === 0 ? !1 : n > L, D = (n, o) => {
12
+ if (n === void 0) return c;
13
+ const e = c.find((t) => t >= n), r = new Set(
14
+ c.filter((t) => t < n)
15
+ );
16
+ return r.add(o), e !== void 0 && r.add(e), c.filter((t) => r.has(t));
17
+ }, E = ({
18
+ currentPage: n,
19
+ totalPages: o,
20
+ totalCount: e,
21
+ isFetching: r,
22
+ handleFirstPage: t,
23
+ handlePreviousPage: u,
24
+ handleNextPage: f,
25
+ handleLastPage: b,
26
+ handleItemsPerPageChange: h,
27
+ itemsPerPage: m = 5
22
28
  }) => {
23
- const { t: o } = f("common"), a = r();
24
- return L(s) ? /* @__PURE__ */ n("section", { className: e.paginationControl, "data-testid": "pagination-control", children: /* @__PURE__ */ l(h, { justifyContent: "space-between", alignItems: "center", children: [
25
- /* @__PURE__ */ n("div", { className: e.paginationControlCount, children: /* @__PURE__ */ n("section", { children: /* @__PURE__ */ n(
26
- a.Select,
29
+ const { t: a } = v("common"), l = g();
30
+ return B(e) ? /* @__PURE__ */ i("section", { className: d.paginationControl, "data-testid": "pagination-control", children: /* @__PURE__ */ p(C, { justifyContent: "space-between", alignItems: "center", children: [
31
+ /* @__PURE__ */ i("div", { className: d.paginationControlCount, children: /* @__PURE__ */ i("section", { children: /* @__PURE__ */ i(
32
+ l.Select,
27
33
  {
28
- label: o("labels.paginationControlCountLabel"),
34
+ label: a("labels.paginationControlCountLabel"),
29
35
  placeholder: "",
30
36
  shouldVisuallyHideLabel: !0,
31
- value: b.toString(),
32
- onChange: (C) => {
33
- g(Number(C));
37
+ value: m.toString(),
38
+ onChange: (s) => {
39
+ h(Number(s));
34
40
  },
35
- options: [
36
- { value: "5", label: "5" },
37
- { value: "10", label: "10" },
38
- { value: "25", label: "25" },
39
- { value: "50", label: "50" }
40
- ]
41
+ options: D(e, m).map((s) => ({
42
+ value: s.toString(),
43
+ label: s.toString()
44
+ }))
41
45
  }
42
46
  ) }) }),
43
- /* @__PURE__ */ l("div", { className: e.paginationControlButtons, children: [
44
- c && /* @__PURE__ */ n(P, { ariaLabel: o("labels.paginationFetchingLabel") }),
45
- /* @__PURE__ */ n(
46
- a.ButtonIcon,
47
+ /* @__PURE__ */ p("div", { className: d.paginationControlButtons, children: [
48
+ r && /* @__PURE__ */ i(N, { ariaLabel: a("labels.paginationFetchingLabel") }),
49
+ /* @__PURE__ */ i(
50
+ l.ButtonIcon,
47
51
  {
48
- "aria-label": o("icons.paginationFirst"),
49
- isDisabled: i === 1,
50
- onClick: m,
51
- children: /* @__PURE__ */ n(v, {})
52
+ "aria-label": a("icons.paginationFirst"),
53
+ isDisabled: n === 1,
54
+ onClick: t,
55
+ children: /* @__PURE__ */ i(S, {})
52
56
  }
53
57
  ),
54
- /* @__PURE__ */ n(
55
- a.ButtonIcon,
58
+ /* @__PURE__ */ i(
59
+ l.ButtonIcon,
56
60
  {
57
- "aria-label": o("icons.paginationPrev"),
61
+ "aria-label": a("icons.paginationPrev"),
58
62
  "data-testid": "pagination-previous",
59
- isDisabled: i === 1,
60
- onClick: p,
61
- children: /* @__PURE__ */ n(I, {})
63
+ isDisabled: n === 1,
64
+ onClick: u,
65
+ children: /* @__PURE__ */ i(I, {})
62
66
  }
63
67
  ),
64
- /* @__PURE__ */ n(
65
- a.ButtonIcon,
68
+ /* @__PURE__ */ i(
69
+ l.ButtonIcon,
66
70
  {
67
- "aria-label": o("icons.paginationNext"),
71
+ "aria-label": a("icons.paginationNext"),
68
72
  "data-testid": "pagination-next",
69
- isDisabled: i === t,
70
- onClick: d,
71
- children: /* @__PURE__ */ n(S, {})
73
+ isDisabled: n === o,
74
+ onClick: f,
75
+ children: /* @__PURE__ */ i(P, {})
72
76
  }
73
77
  ),
74
- /* @__PURE__ */ n(
75
- a.ButtonIcon,
78
+ /* @__PURE__ */ i(
79
+ l.ButtonIcon,
76
80
  {
77
- "aria-label": o("icons.paginationLast"),
78
- isDisabled: i === t,
79
- onClick: u,
80
- children: /* @__PURE__ */ n(x, {})
81
+ "aria-label": a("icons.paginationLast"),
82
+ isDisabled: n === o,
83
+ onClick: b,
84
+ children: /* @__PURE__ */ i(x, {})
81
85
  }
82
86
  )
83
87
  ] })
84
88
  ] }) }) : null;
85
- }, G = (i) => {
86
- const t = r();
87
- return t.PaginationControl ? /* @__PURE__ */ n(t.PaginationControl, { ...i }) : /* @__PURE__ */ n(B, { ...i });
89
+ }, G = (n) => {
90
+ const o = g();
91
+ return o.PaginationControl ? /* @__PURE__ */ i(o.PaginationControl, { ...n }) : /* @__PURE__ */ i(E, { ...n });
88
92
  };
89
93
  export {
90
94
  G as PaginationControl
@@ -1 +1 @@
1
- {"version":3,"file":"PaginationControl.js","sources":["../../../../src/components/Common/PaginationControl/PaginationControl.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { Flex } from '../Flex/Flex'\nimport { InlineSpinner } from '../InlineSpinner'\nimport style from './PaginationControl.module.scss'\nimport type { PaginationControlProps, PaginationItemsPerPage } from './PaginationControlTypes'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport PaginationFirstIcon from '@/assets/icons/pagination_first.svg?react'\nimport PaginationPrevIcon from '@/assets/icons/pagination_previous.svg?react'\nimport PaginationNextIcon from '@/assets/icons/pagination_next.svg?react'\nimport PaginationLastIcon from '@/assets/icons/pagination_last.svg?react'\n\nconst MINIMUM_PAGE_SIZE = 5\n\nconst shouldShowPagination = (totalCount: number | undefined): boolean => {\n if (totalCount === undefined) return true\n if (totalCount === 0) return false\n return totalCount > MINIMUM_PAGE_SIZE\n}\n\nconst DefaultPaginationControl = ({\n currentPage,\n totalPages,\n totalCount,\n isFetching,\n handleFirstPage,\n handlePreviousPage,\n handleNextPage,\n handleLastPage,\n handleItemsPerPageChange,\n itemsPerPage = 5,\n}: PaginationControlProps) => {\n const { t } = useTranslation('common')\n const Components = useComponentContext()\n\n if (!shouldShowPagination(totalCount)) {\n return null\n }\n\n return (\n <section className={style.paginationControl} data-testid=\"pagination-control\">\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <div className={style.paginationControlCount}>\n <section>\n <Components.Select\n label={t('labels.paginationControlCountLabel')}\n placeholder=\"\"\n shouldVisuallyHideLabel\n value={itemsPerPage.toString()}\n onChange={n => {\n handleItemsPerPageChange(Number(n) as PaginationItemsPerPage)\n }}\n options={[\n { value: '5', label: '5' },\n { value: '10', label: '10' },\n { value: '25', label: '25' },\n { value: '50', label: '50' },\n ]}\n />\n </section>\n </div>\n <div className={style.paginationControlButtons}>\n {isFetching && <InlineSpinner ariaLabel={t('labels.paginationFetchingLabel')} />}\n <Components.ButtonIcon\n aria-label={t('icons.paginationFirst')}\n isDisabled={currentPage === 1}\n onClick={handleFirstPage}\n >\n <PaginationFirstIcon />\n </Components.ButtonIcon>\n <Components.ButtonIcon\n aria-label={t('icons.paginationPrev')}\n data-testid=\"pagination-previous\"\n isDisabled={currentPage === 1}\n onClick={handlePreviousPage}\n >\n <PaginationPrevIcon />\n </Components.ButtonIcon>\n <Components.ButtonIcon\n aria-label={t('icons.paginationNext')}\n data-testid=\"pagination-next\"\n isDisabled={currentPage === totalPages}\n onClick={handleNextPage}\n >\n <PaginationNextIcon />\n </Components.ButtonIcon>\n <Components.ButtonIcon\n aria-label={t('icons.paginationLast')}\n isDisabled={currentPage === totalPages}\n onClick={handleLastPage}\n >\n <PaginationLastIcon />\n </Components.ButtonIcon>\n </div>\n </Flex>\n </section>\n )\n}\n\n/** @internal */\nexport const PaginationControl = (props: PaginationControlProps) => {\n const Components = useComponentContext()\n\n return Components.PaginationControl ? (\n <Components.PaginationControl {...props} />\n ) : (\n <DefaultPaginationControl {...props} />\n )\n}\n"],"names":["MINIMUM_PAGE_SIZE","shouldShowPagination","totalCount","DefaultPaginationControl","currentPage","totalPages","isFetching","handleFirstPage","handlePreviousPage","handleNextPage","handleLastPage","handleItemsPerPageChange","itemsPerPage","t","useTranslation","Components","useComponentContext","jsx","style","jsxs","Flex","n","InlineSpinner","PaginationFirstIcon","PaginationPrevIcon","PaginationNextIcon","PaginationLastIcon","PaginationControl","props"],"mappings":"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"}
1
+ {"version":3,"file":"PaginationControl.js","sources":["../../../../src/components/Common/PaginationControl/PaginationControl.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport { Flex } from '../Flex/Flex'\nimport { InlineSpinner } from '../InlineSpinner'\nimport style from './PaginationControl.module.scss'\nimport type { PaginationControlProps, PaginationItemsPerPage } from './PaginationControlTypes'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport PaginationFirstIcon from '@/assets/icons/pagination_first.svg?react'\nimport PaginationPrevIcon from '@/assets/icons/pagination_previous.svg?react'\nimport PaginationNextIcon from '@/assets/icons/pagination_next.svg?react'\nimport PaginationLastIcon from '@/assets/icons/pagination_last.svg?react'\n\nconst MINIMUM_PAGE_SIZE = 5\n\nconst ITEMS_PER_PAGE_OPTIONS: PaginationItemsPerPage[] = [5, 10, 25, 50]\n\nconst shouldShowPagination = (totalCount: number | undefined): boolean => {\n if (totalCount === undefined) return true\n if (totalCount === 0) return false\n return totalCount > MINIMUM_PAGE_SIZE\n}\n\nconst getVisibleItemsPerPageOptions = (\n totalCount: number | undefined,\n itemsPerPage: PaginationItemsPerPage,\n): PaginationItemsPerPage[] => {\n if (totalCount === undefined) return ITEMS_PER_PAGE_OPTIONS\n\n const smallestOptionCoveringAll = ITEMS_PER_PAGE_OPTIONS.find(option => option >= totalCount)\n const visible = new Set<PaginationItemsPerPage>(\n ITEMS_PER_PAGE_OPTIONS.filter(option => option < totalCount),\n )\n visible.add(itemsPerPage)\n if (smallestOptionCoveringAll !== undefined) visible.add(smallestOptionCoveringAll)\n\n return ITEMS_PER_PAGE_OPTIONS.filter(option => visible.has(option))\n}\n\nconst DefaultPaginationControl = ({\n currentPage,\n totalPages,\n totalCount,\n isFetching,\n handleFirstPage,\n handlePreviousPage,\n handleNextPage,\n handleLastPage,\n handleItemsPerPageChange,\n itemsPerPage = 5,\n}: PaginationControlProps) => {\n const { t } = useTranslation('common')\n const Components = useComponentContext()\n\n if (!shouldShowPagination(totalCount)) {\n return null\n }\n\n return (\n <section className={style.paginationControl} data-testid=\"pagination-control\">\n <Flex justifyContent=\"space-between\" alignItems=\"center\">\n <div className={style.paginationControlCount}>\n <section>\n <Components.Select\n label={t('labels.paginationControlCountLabel')}\n placeholder=\"\"\n shouldVisuallyHideLabel\n value={itemsPerPage.toString()}\n onChange={n => {\n handleItemsPerPageChange(Number(n) as PaginationItemsPerPage)\n }}\n options={getVisibleItemsPerPageOptions(totalCount, itemsPerPage).map(option => ({\n value: option.toString(),\n label: option.toString(),\n }))}\n />\n </section>\n </div>\n <div className={style.paginationControlButtons}>\n {isFetching && <InlineSpinner ariaLabel={t('labels.paginationFetchingLabel')} />}\n <Components.ButtonIcon\n aria-label={t('icons.paginationFirst')}\n isDisabled={currentPage === 1}\n onClick={handleFirstPage}\n >\n <PaginationFirstIcon />\n </Components.ButtonIcon>\n <Components.ButtonIcon\n aria-label={t('icons.paginationPrev')}\n data-testid=\"pagination-previous\"\n isDisabled={currentPage === 1}\n onClick={handlePreviousPage}\n >\n <PaginationPrevIcon />\n </Components.ButtonIcon>\n <Components.ButtonIcon\n aria-label={t('icons.paginationNext')}\n data-testid=\"pagination-next\"\n isDisabled={currentPage === totalPages}\n onClick={handleNextPage}\n >\n <PaginationNextIcon />\n </Components.ButtonIcon>\n <Components.ButtonIcon\n aria-label={t('icons.paginationLast')}\n isDisabled={currentPage === totalPages}\n onClick={handleLastPage}\n >\n <PaginationLastIcon />\n </Components.ButtonIcon>\n </div>\n </Flex>\n </section>\n )\n}\n\n/** @internal */\nexport const PaginationControl = (props: PaginationControlProps) => {\n const Components = useComponentContext()\n\n return Components.PaginationControl ? (\n <Components.PaginationControl {...props} />\n ) : (\n <DefaultPaginationControl {...props} />\n )\n}\n"],"names":["MINIMUM_PAGE_SIZE","ITEMS_PER_PAGE_OPTIONS","shouldShowPagination","totalCount","getVisibleItemsPerPageOptions","itemsPerPage","smallestOptionCoveringAll","option","visible","DefaultPaginationControl","currentPage","totalPages","isFetching","handleFirstPage","handlePreviousPage","handleNextPage","handleLastPage","handleItemsPerPageChange","t","useTranslation","Components","useComponentContext","jsx","style","jsxs","Flex","n","InlineSpinner","PaginationFirstIcon","PaginationPrevIcon","PaginationNextIcon","PaginationLastIcon","PaginationControl","props"],"mappings":";;;;;;;;;;AAWA,MAAMA,IAAoB,GAEpBC,IAAmD,CAAC,GAAG,IAAI,IAAI,EAAE,GAEjEC,IAAuB,CAACC,MACxBA,MAAe,SAAkB,KACjCA,MAAe,IAAU,KACtBA,IAAaH,GAGhBI,IAAgC,CACpCD,GACAE,MAC6B;AAC7B,MAAIF,MAAe,OAAW,QAAOF;AAErC,QAAMK,IAA4BL,EAAuB,KAAK,CAAAM,MAAUA,KAAUJ,CAAU,GACtFK,IAAU,IAAI;AAAA,IAClBP,EAAuB,OAAO,CAAAM,MAAUA,IAASJ,CAAU;AAAA,EAAA;AAE7D,SAAAK,EAAQ,IAAIH,CAAY,GACpBC,MAA8B,UAAWE,EAAQ,IAAIF,CAAyB,GAE3EL,EAAuB,OAAO,CAAAM,MAAUC,EAAQ,IAAID,CAAM,CAAC;AACpE,GAEME,IAA2B,CAAC;AAAA,EAChC,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAR;AAAA,EACA,YAAAS;AAAA,EACA,iBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,0BAAAC;AAAA,EACA,cAAAZ,IAAe;AACjB,MAA8B;AAC5B,QAAM,EAAE,GAAAa,EAAA,IAAMC,EAAe,QAAQ,GAC/BC,IAAaC,EAAA;AAEnB,SAAKnB,EAAqBC,CAAU,IAKlC,gBAAAmB,EAAC,WAAA,EAAQ,WAAWC,EAAM,mBAAmB,eAAY,sBACvD,UAAA,gBAAAC,EAACC,GAAA,EAAK,gBAAe,iBAAgB,YAAW,UAC9C,UAAA;AAAA,IAAA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAM,wBACpB,4BAAC,WAAA,EACC,UAAA,gBAAAD;AAAA,MAACF,EAAW;AAAA,MAAX;AAAA,QACC,OAAOF,EAAE,oCAAoC;AAAA,QAC7C,aAAY;AAAA,QACZ,yBAAuB;AAAA,QACvB,OAAOb,EAAa,SAAA;AAAA,QACpB,UAAU,CAAAqB,MAAK;AACb,UAAAT,EAAyB,OAAOS,CAAC,CAA2B;AAAA,QAC9D;AAAA,QACA,SAAStB,EAA8BD,GAAYE,CAAY,EAAE,IAAI,CAAAE,OAAW;AAAA,UAC9E,OAAOA,EAAO,SAAA;AAAA,UACd,OAAOA,EAAO,SAAA;AAAA,QAAS,EACvB;AAAA,MAAA;AAAA,IAAA,GAEN,EAAA,CACF;AAAA,IACA,gBAAAiB,EAAC,OAAA,EAAI,WAAWD,EAAM,0BACnB,UAAA;AAAA,MAAAX,KAAc,gBAAAU,EAACK,GAAA,EAAc,WAAWT,EAAE,gCAAgC,GAAG;AAAA,MAC9E,gBAAAI;AAAA,QAACF,EAAW;AAAA,QAAX;AAAA,UACC,cAAYF,EAAE,uBAAuB;AAAA,UACrC,YAAYR,MAAgB;AAAA,UAC5B,SAASG;AAAA,UAET,4BAACe,GAAA,CAAA,CAAoB;AAAA,QAAA;AAAA,MAAA;AAAA,MAEvB,gBAAAN;AAAA,QAACF,EAAW;AAAA,QAAX;AAAA,UACC,cAAYF,EAAE,sBAAsB;AAAA,UACpC,eAAY;AAAA,UACZ,YAAYR,MAAgB;AAAA,UAC5B,SAASI;AAAA,UAET,4BAACe,GAAA,CAAA,CAAmB;AAAA,QAAA;AAAA,MAAA;AAAA,MAEtB,gBAAAP;AAAA,QAACF,EAAW;AAAA,QAAX;AAAA,UACC,cAAYF,EAAE,sBAAsB;AAAA,UACpC,eAAY;AAAA,UACZ,YAAYR,MAAgBC;AAAA,UAC5B,SAASI;AAAA,UAET,4BAACe,GAAA,CAAA,CAAmB;AAAA,QAAA;AAAA,MAAA;AAAA,MAEtB,gBAAAR;AAAA,QAACF,EAAW;AAAA,QAAX;AAAA,UACC,cAAYF,EAAE,sBAAsB;AAAA,UACpC,YAAYR,MAAgBC;AAAA,UAC5B,SAASK;AAAA,UAET,4BAACe,GAAA,CAAA,CAAmB;AAAA,QAAA;AAAA,MAAA;AAAA,IACtB,EAAA,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF,IAzDO;AA2DX,GAGaC,IAAoB,CAACC,MAAkC;AAClE,QAAMb,IAAaC,EAAA;AAEnB,SAAOD,EAAW,oBAChB,gBAAAE,EAACF,EAAW,mBAAX,EAA8B,GAAGa,EAAA,CAAO,IAEzC,gBAAAX,EAACb,GAAA,EAA0B,GAAGwB,EAAA,CAAO;AAEzC;"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as l } from "react/jsx-runtime";
2
2
  import h from "classnames";
3
- import { Flex as u } from "../../Flex/Flex.js";
4
3
  import { BreadcrumbsDefaults as C } from "./BreadcrumbsTypes.js";
5
4
  import i from "./Breadcrumbs.module.scss.js";
6
5
  import { applyMissingDefaults as x } from "../../../../helpers/applyMissingDefaults.js";
6
+ import { Flex as u } from "../../Flex/Flex.js";
7
7
  function P(f) {
8
8
  const p = x(f, C), {
9
9
  className: s,
@@ -7,13 +7,13 @@ import { FileInputDefaults as K } from "./FileInputTypes.js";
7
7
  import n from "./FileInput.module.scss.js";
8
8
  import { applyMissingDefaults as L } from "../../../../helpers/applyMissingDefaults.js";
9
9
  import { FieldLayout as O } from "../../FieldLayout/FieldLayout.js";
10
- import { Flex as y } from "../../Flex/Flex.js";
11
10
  import { ButtonIcon as R } from "../Button/ButtonIcon.js";
12
11
  import W from "../../../../assets/icons/icon-trashcan.svg.js";
13
12
  import Z from "../../../../assets/icons/icon-file-outline.svg.js";
14
13
  import $ from "../../../../assets/icons/icon-file-pdf.svg.js";
15
14
  import H from "../../../../assets/icons/icon-file-png.svg.js";
16
15
  import V from "../../../../assets/icons/icon-file-jpg.svg.js";
16
+ import { Flex as y } from "../../Flex/Flex.js";
17
17
  function Q(i) {
18
18
  return i === "application/pdf" ? $ : i === "image/png" ? H : i === "image/jpeg" || i === "image/jpg" ? V : Z;
19
19
  }
@@ -1,7 +1,7 @@
1
1
  import { jsxs as t, jsx as r } from "react/jsx-runtime";
2
2
  import c from "classnames";
3
- import { Flex as n } from "../../Flex/Flex.js";
4
- import p from "./ProgressBar.module.scss.js";
3
+ import n from "./ProgressBar.module.scss.js";
4
+ import { Flex as p } from "../../Flex/Flex.js";
5
5
  import { VisuallyHidden as d } from "../../VisuallyHidden/VisuallyHidden.js";
6
6
  function y({
7
7
  className: i,
@@ -13,9 +13,9 @@ function y({
13
13
  const s = Math.max(1, Math.min(m, e)), l = {
14
14
  "--g-progress-bar-width": `${s * 100 / e}%`
15
15
  };
16
- return /* @__PURE__ */ t(n, { flexDirection: "column", children: [
16
+ return /* @__PURE__ */ t(p, { flexDirection: "column", children: [
17
17
  o && /* @__PURE__ */ r(o, {}),
18
- /* @__PURE__ */ r("div", { className: c(p.root, i), style: l, children: /* @__PURE__ */ r(d, { children: /* @__PURE__ */ r("progress", { "aria-label": a, value: s, max: e }) }) })
18
+ /* @__PURE__ */ r("div", { className: c(n.root, i), style: l, children: /* @__PURE__ */ r(d, { children: /* @__PURE__ */ r("progress", { "aria-label": a, value: s, max: e }) }) })
19
19
  ] });
20
20
  }
21
21
  export {
@@ -0,0 +1,60 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { createMachine as p } from "robot3";
3
+ import { useState as h, useMemo as S } from "react";
4
+ import { usePaySchedulesGetAllSuspense as d } from "@gusto/embedded-api/react-query/paySchedulesGetAll";
5
+ import { payScheduleManagementStateMachine as f } from "./payScheduleManagementStateMachine.js";
6
+ import { PayScheduleOverviewContextual as y, PayScheduleEditFormContextual as C } from "./PayScheduleManagementComponents.js";
7
+ import { BaseComponent as P } from "../../../Base/Base.js";
8
+ import { useBase as g } from "../../../Base/useBase.js";
9
+ import { useI18n as u, useComponentDictionary as v } from "../../../../i18n/I18n.js";
10
+ import { Flow as w } from "../../../Flow/Flow.js";
11
+ import { useUnstableFeature as M } from "../../../../contexts/UnstableFeaturesProvider/useUnstableFeature.js";
12
+ const k = ({
13
+ companyId: e,
14
+ enableAutoPilot: t,
15
+ enableMultipleSchedules: o,
16
+ dictionary: a,
17
+ ...r
18
+ }) => (M("managePaySchedules", { throwIfDisabled: !0 }), /* @__PURE__ */ m(P, { ...r, children: /* @__PURE__ */ m(
19
+ x,
20
+ {
21
+ companyId: e,
22
+ enableAutoPilot: t,
23
+ enableMultipleSchedules: o,
24
+ dictionary: a
25
+ }
26
+ ) }));
27
+ function x({
28
+ companyId: e,
29
+ enableAutoPilot: t,
30
+ enableMultipleSchedules: o,
31
+ dictionary: a
32
+ }) {
33
+ u("Company.Management.PaySchedule"), v("Company.Management.PaySchedule", a), u("Company.PaySchedule");
34
+ const { onEvent: r } = g(), { data: c } = d({ companyId: e }), [{ initialState: i, initialComponent: s }] = h(() => {
35
+ const n = (c.payScheduleShowResponse?.length ?? 0) > 0;
36
+ return {
37
+ initialState: n ? "overview" : "createSchedule",
38
+ initialComponent: n ? y : C
39
+ };
40
+ }), l = S(
41
+ () => p(
42
+ i,
43
+ f,
44
+ (n) => ({
45
+ ...n,
46
+ component: s,
47
+ companyId: e,
48
+ enableAutoPilot: t,
49
+ enableMultipleSchedules: o,
50
+ successAlert: null
51
+ })
52
+ ),
53
+ [e, t, o, i, s]
54
+ );
55
+ return /* @__PURE__ */ m(w, { machine: l, onEvent: r });
56
+ }
57
+ export {
58
+ k as PaySchedule
59
+ };
60
+ //# sourceMappingURL=PaySchedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaySchedule.js","sources":["../../../../../src/components/Company/PaySchedule/management/PaySchedule.tsx"],"sourcesContent":["import { createMachine } from 'robot3'\nimport { useMemo, useState } from 'react'\nimport { usePaySchedulesGetAllSuspense } from '@gusto/embedded-api/react-query/paySchedulesGetAll'\nimport { payScheduleManagementStateMachine } from './payScheduleManagementStateMachine'\nimport type { PayScheduleManagementContextInterface } from './PayScheduleManagementComponents'\nimport {\n PayScheduleOverviewContextual,\n PayScheduleEditFormContextual,\n} from './PayScheduleManagementComponents'\nimport type { BaseComponentInterface } from '@/components/Base'\nimport { BaseComponent, useBase } from '@/components/Base'\nimport type { BaseComponentKeys } from '@/components/Base/Base'\nimport { useI18n } from '@/i18n'\nimport { useComponentDictionary } from '@/i18n/I18n'\nimport { Flow } from '@/components/Flow/Flow'\nimport { useUnstableFeature } from '@/contexts/UnstableFeaturesProvider/useUnstableFeature'\n\n/**\n * Props for {@link PaySchedule}.\n *\n * @alpha\n */\nexport interface PayScheduleProps extends BaseComponentInterface<'Company.Management.PaySchedule'> {\n /** Company whose pay schedule is managed. */\n companyId: string\n /** Shows the AutoPilot row and its Edit action. */\n enableAutoPilot?: boolean\n /** Shows the Manage action. */\n enableMultipleSchedules?: boolean\n}\n\n/**\n * Manages a company's pay schedule after onboarding.\n *\n * @remarks\n * Renders the overview when the company already has a pay schedule, or the create form\n * directly when it doesn't.\n *\n * @alpha\n */\nexport const PaySchedule = ({\n companyId,\n enableAutoPilot,\n enableMultipleSchedules,\n dictionary,\n ...props\n}: PayScheduleProps) => {\n useUnstableFeature('managePaySchedules', { throwIfDisabled: true })\n\n return (\n <BaseComponent {...props}>\n <Root\n companyId={companyId}\n enableAutoPilot={enableAutoPilot}\n enableMultipleSchedules={enableMultipleSchedules}\n dictionary={dictionary}\n />\n </BaseComponent>\n )\n}\n\nfunction Root({\n companyId,\n enableAutoPilot,\n enableMultipleSchedules,\n dictionary,\n}: Omit<PayScheduleProps, BaseComponentKeys>) {\n useI18n('Company.Management.PaySchedule')\n useComponentDictionary('Company.Management.PaySchedule', dictionary)\n // PayScheduleEditFormContextual reuses the onboarding PayScheduleForm, whose translations\n // live under its own namespace and are otherwise never loaded from this flow.\n useI18n('Company.PaySchedule')\n const { onEvent } = useBase()\n const { data: paySchedules } = usePaySchedulesGetAllSuspense({ companyId })\n\n /**\n * Freeze the initial routing decision. Recomputing it after a later refetch (e.g. once the\n * first schedule is created) would re-seat the machine and orphan its interpreter.\n */\n const [{ initialState, initialComponent }] = useState<{\n initialState: keyof typeof payScheduleManagementStateMachine\n initialComponent: typeof PayScheduleOverviewContextual | typeof PayScheduleEditFormContextual\n }>(() => {\n const hasSchedules = (paySchedules.payScheduleShowResponse?.length ?? 0) > 0\n return {\n initialState: hasSchedules ? 'overview' : 'createSchedule',\n initialComponent: hasSchedules\n ? PayScheduleOverviewContextual\n : PayScheduleEditFormContextual,\n }\n })\n\n const machine = useMemo(\n () =>\n createMachine(\n initialState,\n payScheduleManagementStateMachine,\n (initialContext: PayScheduleManagementContextInterface) => ({\n ...initialContext,\n component: initialComponent,\n companyId,\n enableAutoPilot,\n enableMultipleSchedules,\n successAlert: null,\n }),\n ),\n [companyId, enableAutoPilot, enableMultipleSchedules, initialState, initialComponent],\n )\n\n return <Flow machine={machine} onEvent={onEvent} />\n}\n"],"names":["PaySchedule","companyId","enableAutoPilot","enableMultipleSchedules","dictionary","props","useUnstableFeature","jsx","BaseComponent","Root","useI18n","useComponentDictionary","onEvent","useBase","paySchedules","usePaySchedulesGetAllSuspense","initialState","initialComponent","useState","hasSchedules","PayScheduleOverviewContextual","PayScheduleEditFormContextual","machine","useMemo","createMachine","payScheduleManagementStateMachine","initialContext","Flow"],"mappings":";;;;;;;;;;;AAwCO,MAAMA,IAAc,CAAC;AAAA,EAC1B,WAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,GAAGC;AACL,OACEC,EAAmB,sBAAsB,EAAE,iBAAiB,GAAA,CAAM,GAGhE,gBAAAC,EAACC,GAAA,EAAe,GAAGH,GACjB,UAAA,gBAAAE;AAAA,EAACE;AAAA,EAAA;AAAA,IACC,WAAAR;AAAA,IACA,iBAAAC;AAAA,IACA,yBAAAC;AAAA,IACA,YAAAC;AAAA,EAAA;AAAA,GAEJ;AAIJ,SAASK,EAAK;AAAA,EACZ,WAAAR;AAAA,EACA,iBAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,YAAAC;AACF,GAA8C;AAC5C,EAAAM,EAAQ,gCAAgC,GACxCC,EAAuB,kCAAkCP,CAAU,GAGnEM,EAAQ,qBAAqB;AAC7B,QAAM,EAAE,SAAAE,EAAA,IAAYC,EAAA,GACd,EAAE,MAAMC,EAAA,IAAiBC,EAA8B,EAAE,WAAAd,GAAW,GAMpE,CAAC,EAAE,cAAAe,GAAc,kBAAAC,GAAkB,IAAIC,EAG1C,MAAM;AACP,UAAMC,KAAgBL,EAAa,yBAAyB,UAAU,KAAK;AAC3E,WAAO;AAAA,MACL,cAAcK,IAAe,aAAa;AAAA,MAC1C,kBAAkBA,IACdC,IACAC;AAAA,IAAA;AAAA,EAER,CAAC,GAEKC,IAAUC;AAAA,IACd,MACEC;AAAA,MACER;AAAA,MACAS;AAAA,MACA,CAACC,OAA2D;AAAA,QAC1D,GAAGA;AAAA,QACH,WAAWT;AAAA,QACX,WAAAhB;AAAA,QACA,iBAAAC;AAAA,QACA,yBAAAC;AAAA,QACA,cAAc;AAAA,MAAA;AAAA,IAChB;AAAA,IAEJ,CAACF,GAAWC,GAAiBC,GAAyBa,GAAcC,CAAgB;AAAA,EAAA;AAGtF,SAAO,gBAAAV,EAACoB,GAAA,EAAK,SAAAL,GAAkB,SAAAV,EAAA,CAAkB;AACnD;"}
@@ -0,0 +1,67 @@
1
+ import { jsxs as s, jsx as i } from "react/jsx-runtime";
2
+ import { useTranslation as l } from "react-i18next";
3
+ import { Flex as d } from "../../../../Common/Flex/Flex.js";
4
+ import { ActionsLayout as m } from "../../../../Common/ActionsLayout/ActionsLayout.js";
5
+ import { useComponentContext as p } from "../../../../../contexts/ComponentAdapter/useComponentContext.js";
6
+ import { useDateFormatter as y } from "../../../../../hooks/useDateFormatter.js";
7
+ import { useDataView as P } from "../../../../Common/DataView/useDataView.js";
8
+ import { DataView as c } from "../../../../Common/DataView/DataView.js";
9
+ function f({
10
+ employeeChanges: r
11
+ }) {
12
+ const { t } = l("Company.Management.PayScheduleAssignment"), a = y(), o = P({
13
+ data: r,
14
+ columns: [
15
+ {
16
+ title: t("reviewStep.nameLabel"),
17
+ key: "firstName",
18
+ render: (e) => [e.firstName, e.lastName].filter(Boolean).join(" ")
19
+ },
20
+ {
21
+ title: t("reviewStep.payFrequencyLabel"),
22
+ key: "payFrequency",
23
+ render: (e) => e.payFrequency
24
+ },
25
+ {
26
+ title: t("reviewStep.firstPayPeriodLabel"),
27
+ key: "firstPayPeriod",
28
+ render: (e) => e.firstPayPeriod ? a.formatPayPeriodRange(
29
+ e.firstPayPeriod.startDate,
30
+ e.firstPayPeriod.endDate
31
+ ) : null
32
+ },
33
+ {
34
+ title: t("reviewStep.transitionPayPeriodLabel"),
35
+ key: "transitionPayPeriod",
36
+ render: (e) => e.transitionPayPeriod ? a.formatPayPeriodRange(
37
+ e.transitionPayPeriod.startDate,
38
+ e.transitionPayPeriod.endDate
39
+ ) : t("reviewStep.noTransitionNeeded")
40
+ }
41
+ ]
42
+ });
43
+ return /* @__PURE__ */ i(c, { label: t("reviewStep.employeeChangesHeading"), ...o });
44
+ }
45
+ function b({
46
+ employeeChanges: r,
47
+ isSubmitting: t,
48
+ onBack: a,
49
+ onSubmit: o
50
+ }) {
51
+ const { t: e } = l("Company.Management.PayScheduleAssignment"), n = p();
52
+ return /* @__PURE__ */ s(d, { flexDirection: "column", gap: 32, children: [
53
+ /* @__PURE__ */ i(n.Heading, { as: "h2", children: r.length === 0 ? e("reviewStep.noChangesHeading") : e("reviewStep.heading") }),
54
+ r.length === 0 ? /* @__PURE__ */ i(n.Text, { variant: "supporting", children: e("reviewStep.noChangesDescription") }) : /* @__PURE__ */ s(d, { flexDirection: "column", gap: 16, children: [
55
+ /* @__PURE__ */ i(n.Text, { weight: "semibold", children: e("reviewStep.employeeChangesHeading") }),
56
+ /* @__PURE__ */ i(f, { employeeChanges: r })
57
+ ] }),
58
+ /* @__PURE__ */ s(m, { children: [
59
+ /* @__PURE__ */ i(n.Button, { variant: "secondary", onClick: a, isDisabled: t, children: e("backCta") }),
60
+ /* @__PURE__ */ i(n.Button, { variant: "primary", onClick: o, isLoading: t, children: e("submitCta") })
61
+ ] })
62
+ ] });
63
+ }
64
+ export {
65
+ b as AssignmentReviewStepPresentation
66
+ };
67
+ //# sourceMappingURL=AssignmentReviewStepPresentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssignmentReviewStepPresentation.js","sources":["../../../../../../src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentReviewStepPresentation.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next'\nimport type { PayScheduleAssignmentEmployeeChange } from '@gusto/embedded-api/models/components/payscheduleassignmentemployeechange'\nimport { Flex, ActionsLayout, DataView, useDataView } from '@/components/Common'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\nimport { useDateFormatter } from '@/hooks/useDateFormatter'\n\n/** @internal */\nexport interface AssignmentReviewStepPresentationProps {\n employeeChanges: PayScheduleAssignmentEmployeeChange[]\n isSubmitting: boolean\n onBack: () => void\n onSubmit: () => void\n}\n\nfunction EmployeeChangesTable({\n employeeChanges,\n}: {\n employeeChanges: PayScheduleAssignmentEmployeeChange[]\n}) {\n const { t } = useTranslation('Company.Management.PayScheduleAssignment')\n const dateFormatter = useDateFormatter()\n\n const dataViewProps = useDataView({\n data: employeeChanges,\n columns: [\n {\n title: t('reviewStep.nameLabel'),\n key: 'firstName',\n render: change => [change.firstName, change.lastName].filter(Boolean).join(' '),\n },\n {\n title: t('reviewStep.payFrequencyLabel'),\n key: 'payFrequency',\n render: change => change.payFrequency,\n },\n {\n title: t('reviewStep.firstPayPeriodLabel'),\n key: 'firstPayPeriod',\n render: change =>\n change.firstPayPeriod\n ? dateFormatter.formatPayPeriodRange(\n change.firstPayPeriod.startDate,\n change.firstPayPeriod.endDate,\n )\n : null,\n },\n {\n title: t('reviewStep.transitionPayPeriodLabel'),\n key: 'transitionPayPeriod',\n render: change =>\n change.transitionPayPeriod\n ? dateFormatter.formatPayPeriodRange(\n change.transitionPayPeriod.startDate,\n change.transitionPayPeriod.endDate,\n )\n : t('reviewStep.noTransitionNeeded'),\n },\n ],\n })\n\n return <DataView label={t('reviewStep.employeeChangesHeading')} {...dataViewProps} />\n}\n\n/** @internal */\nexport function AssignmentReviewStepPresentation({\n employeeChanges,\n isSubmitting,\n onBack,\n onSubmit,\n}: AssignmentReviewStepPresentationProps) {\n const { t } = useTranslation('Company.Management.PayScheduleAssignment')\n const Components = useComponentContext()\n\n return (\n <Flex flexDirection=\"column\" gap={32}>\n <Components.Heading as=\"h2\">\n {employeeChanges.length === 0 ? t('reviewStep.noChangesHeading') : t('reviewStep.heading')}\n </Components.Heading>\n {employeeChanges.length === 0 ? (\n <Components.Text variant=\"supporting\">\n {t('reviewStep.noChangesDescription')}\n </Components.Text>\n ) : (\n <Flex flexDirection=\"column\" gap={16}>\n <Components.Text weight=\"semibold\">\n {t('reviewStep.employeeChangesHeading')}\n </Components.Text>\n <EmployeeChangesTable employeeChanges={employeeChanges} />\n </Flex>\n )}\n <ActionsLayout>\n <Components.Button variant=\"secondary\" onClick={onBack} isDisabled={isSubmitting}>\n {t('backCta')}\n </Components.Button>\n <Components.Button variant=\"primary\" onClick={onSubmit} isLoading={isSubmitting}>\n {t('submitCta')}\n </Components.Button>\n </ActionsLayout>\n </Flex>\n )\n}\n"],"names":["EmployeeChangesTable","employeeChanges","useTranslation","dateFormatter","useDateFormatter","dataViewProps","useDataView","change","DataView","AssignmentReviewStepPresentation","isSubmitting","onBack","onSubmit","t","Components","useComponentContext","jsxs","Flex","jsx","ActionsLayout"],"mappings":";;;;;;;;AAcA,SAASA,EAAqB;AAAA,EAC5B,iBAAAC;AACF,GAEG;AACD,QAAM,EAAE,EAAA,IAAMC,EAAe,0CAA0C,GACjEC,IAAgBC,EAAA,GAEhBC,IAAgBC,EAAY;AAAA,IAChC,MAAML;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,OAAO,EAAE,sBAAsB;AAAA,QAC/B,KAAK;AAAA,QACL,QAAQ,CAAAM,MAAU,CAACA,EAAO,WAAWA,EAAO,QAAQ,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,MAAA;AAAA,MAEhF;AAAA,QACE,OAAO,EAAE,8BAA8B;AAAA,QACvC,KAAK;AAAA,QACL,QAAQ,OAAUA,EAAO;AAAA,MAAA;AAAA,MAE3B;AAAA,QACE,OAAO,EAAE,gCAAgC;AAAA,QACzC,KAAK;AAAA,QACL,QAAQ,CAAAA,MACNA,EAAO,iBACHJ,EAAc;AAAA,UACZI,EAAO,eAAe;AAAA,UACtBA,EAAO,eAAe;AAAA,QAAA,IAExB;AAAA,MAAA;AAAA,MAER;AAAA,QACE,OAAO,EAAE,qCAAqC;AAAA,QAC9C,KAAK;AAAA,QACL,QAAQ,CAAAA,MACNA,EAAO,sBACHJ,EAAc;AAAA,UACZI,EAAO,oBAAoB;AAAA,UAC3BA,EAAO,oBAAoB;AAAA,QAAA,IAE7B,EAAE,+BAA+B;AAAA,MAAA;AAAA,IACzC;AAAA,EACF,CACD;AAED,2BAAQC,GAAA,EAAS,OAAO,EAAE,mCAAmC,GAAI,GAAGH,GAAe;AACrF;AAGO,SAASI,EAAiC;AAAA,EAC/C,iBAAAR;AAAA,EACA,cAAAS;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AACF,GAA0C;AACxC,QAAM,EAAE,GAAAC,EAAA,IAAMX,EAAe,0CAA0C,GACjEY,IAAaC,EAAA;AAEnB,SACE,gBAAAC,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,IAAA,gBAAAC,EAACJ,EAAW,SAAX,EAAmB,IAAG,MACpB,UAAAb,EAAgB,WAAW,IAAIY,EAAE,6BAA6B,IAAIA,EAAE,oBAAoB,GAC3F;AAAA,IACCZ,EAAgB,WAAW,sBACzBa,EAAW,MAAX,EAAgB,SAAQ,cACtB,UAAAD,EAAE,iCAAiC,GACtC,IAEA,gBAAAG,EAACC,KAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,MAAA,gBAAAC,EAACJ,EAAW,MAAX,EAAgB,QAAO,YACrB,UAAAD,EAAE,mCAAmC,GACxC;AAAA,MACA,gBAAAK,EAAClB,KAAqB,iBAAAC,EAAA,CAAkC;AAAA,IAAA,GAC1D;AAAA,sBAEDkB,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAD,EAACJ,EAAW,QAAX,EAAkB,SAAQ,aAAY,SAASH,GAAQ,YAAYD,GACjE,UAAAG,EAAE,SAAS,EAAA,CACd;AAAA,MACA,gBAAAK,EAACJ,EAAW,QAAX,EAAkB,SAAQ,WAAU,SAASF,GAAU,WAAWF,GAChE,UAAAG,EAAE,WAAW,EAAA,CAChB;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
@@ -0,0 +1,59 @@
1
+ import { jsx as e, jsxs as r } from "react/jsx-runtime";
2
+ import { z as l } from "zod";
3
+ import { useForm as h, FormProvider as f } from "react-hook-form";
4
+ import { zodResolver as S } from "@hookform/resolvers/zod";
5
+ import { useTranslation as y } from "react-i18next";
6
+ import { Flex as d } from "../../../../Common/Flex/Flex.js";
7
+ import { ActionsLayout as b } from "../../../../Common/ActionsLayout/ActionsLayout.js";
8
+ import { Form as g } from "../../../../Common/Form/Form.js";
9
+ import { useComponentContext as v } from "../../../../../contexts/ComponentAdapter/useComponentContext.js";
10
+ import { SelectField as C } from "../../../../Common/Fields/SelectField/SelectField.js";
11
+ const P = l.object({
12
+ defaultPayScheduleUuid: l.string().min(1)
13
+ });
14
+ function x(t) {
15
+ return [t.customName, t.frequency].filter(Boolean).join(" — ");
16
+ }
17
+ function q({
18
+ schedules: t,
19
+ defaultPayScheduleUuid: c,
20
+ onBack: u,
21
+ onAddPaySchedule: m,
22
+ onContinue: s
23
+ }) {
24
+ const { t: o } = y("Company.Management.PayScheduleAssignment"), n = v(), a = h({
25
+ resolver: S(P),
26
+ defaultValues: { defaultPayScheduleUuid: c ?? t[0]?.uuid ?? "" }
27
+ }), p = a.handleSubmit(({ defaultPayScheduleUuid: i }) => {
28
+ s(i);
29
+ });
30
+ return /* @__PURE__ */ e(f, { ...a, children: /* @__PURE__ */ e(g, { onSubmit: () => {
31
+ p();
32
+ }, children: /* @__PURE__ */ r(d, { flexDirection: "column", gap: 32, children: [
33
+ /* @__PURE__ */ e(n.Heading, { as: "h2", children: o("scheduleStep.heading") }),
34
+ /* @__PURE__ */ r(d, { flexDirection: "column", gap: 12, children: [
35
+ /* @__PURE__ */ e(
36
+ C,
37
+ {
38
+ name: "defaultPayScheduleUuid",
39
+ label: o("scheduleStep.payScheduleLabel"),
40
+ description: o("scheduleStep.payScheduleDescription"),
41
+ placeholder: "",
42
+ options: t.map((i) => ({
43
+ value: i.uuid,
44
+ label: x(i)
45
+ }))
46
+ }
47
+ ),
48
+ /* @__PURE__ */ e("div", { children: /* @__PURE__ */ e(n.Button, { variant: "secondary", onClick: m, children: o("scheduleStep.addPayScheduleCta") }) })
49
+ ] }),
50
+ /* @__PURE__ */ r(b, { children: [
51
+ /* @__PURE__ */ e(n.Button, { variant: "secondary", onClick: u, children: o("backCta") }),
52
+ /* @__PURE__ */ e(n.Button, { variant: "primary", type: "submit", isDisabled: t.length === 0, children: o("continueCta") })
53
+ ] })
54
+ ] }) }) });
55
+ }
56
+ export {
57
+ q as AssignmentScheduleStepPresentation
58
+ };
59
+ //# sourceMappingURL=AssignmentScheduleStepPresentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssignmentScheduleStepPresentation.js","sources":["../../../../../../src/components/Company/PaySchedule/management/PayScheduleAssignment/AssignmentScheduleStepPresentation.tsx"],"sourcesContent":["import { z } from 'zod'\nimport { useForm, FormProvider } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { useTranslation } from 'react-i18next'\nimport type { PayScheduleShow } from '@gusto/embedded-api/models/components/payscheduleshow'\nimport { Flex, SelectField, ActionsLayout } from '@/components/Common'\nimport { Form } from '@/components/Common/Form'\nimport { useComponentContext } from '@/contexts/ComponentAdapter/useComponentContext'\n\n/** @internal */\nexport interface AssignmentScheduleStepPresentationProps {\n schedules: PayScheduleShow[]\n defaultPayScheduleUuid?: string\n onBack: () => void\n onAddPaySchedule: () => void\n onContinue: (defaultPayScheduleUuid: string) => void\n}\n\nconst ScheduleStepSchema = z.object({\n defaultPayScheduleUuid: z.string().min(1),\n})\n\ntype ScheduleStepInputs = z.infer<typeof ScheduleStepSchema>\n\nfunction scheduleLabel(schedule: PayScheduleShow): string {\n return [schedule.customName, schedule.frequency].filter(Boolean).join(' — ')\n}\n\n/** @internal */\nexport function AssignmentScheduleStepPresentation({\n schedules,\n defaultPayScheduleUuid,\n onBack,\n onAddPaySchedule,\n onContinue,\n}: AssignmentScheduleStepPresentationProps) {\n const { t } = useTranslation('Company.Management.PayScheduleAssignment')\n const Components = useComponentContext()\n\n const formMethods = useForm<ScheduleStepInputs>({\n resolver: zodResolver(ScheduleStepSchema),\n defaultValues: { defaultPayScheduleUuid: defaultPayScheduleUuid ?? schedules[0]?.uuid ?? '' },\n })\n\n const handleSubmit = formMethods.handleSubmit(({ defaultPayScheduleUuid: uuid }) => {\n onContinue(uuid)\n })\n\n return (\n <FormProvider {...formMethods}>\n <Form onSubmit={() => void handleSubmit()}>\n <Flex flexDirection=\"column\" gap={32}>\n <Components.Heading as=\"h2\">{t('scheduleStep.heading')}</Components.Heading>\n <Flex flexDirection=\"column\" gap={12}>\n <SelectField\n name=\"defaultPayScheduleUuid\"\n label={t('scheduleStep.payScheduleLabel')}\n description={t('scheduleStep.payScheduleDescription')}\n placeholder=\"\"\n options={schedules.map(schedule => ({\n value: schedule.uuid,\n label: scheduleLabel(schedule),\n }))}\n />\n <div>\n <Components.Button variant=\"secondary\" onClick={onAddPaySchedule}>\n {t('scheduleStep.addPayScheduleCta')}\n </Components.Button>\n </div>\n </Flex>\n <ActionsLayout>\n <Components.Button variant=\"secondary\" onClick={onBack}>\n {t('backCta')}\n </Components.Button>\n <Components.Button variant=\"primary\" type=\"submit\" isDisabled={schedules.length === 0}>\n {t('continueCta')}\n </Components.Button>\n </ActionsLayout>\n </Flex>\n </Form>\n </FormProvider>\n )\n}\n"],"names":["ScheduleStepSchema","z","scheduleLabel","schedule","AssignmentScheduleStepPresentation","schedules","defaultPayScheduleUuid","onBack","onAddPaySchedule","onContinue","t","useTranslation","Components","useComponentContext","formMethods","useForm","zodResolver","handleSubmit","uuid","FormProvider","jsx","Form","jsxs","Flex","SelectField","ActionsLayout"],"mappings":";;;;;;;;;;AAkBA,MAAMA,IAAqBC,EAAE,OAAO;AAAA,EAClC,wBAAwBA,EAAE,OAAA,EAAS,IAAI,CAAC;AAC1C,CAAC;AAID,SAASC,EAAcC,GAAmC;AACxD,SAAO,CAACA,EAAS,YAAYA,EAAS,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,KAAK;AAC7E;AAGO,SAASC,EAAmC;AAAA,EACjD,WAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAAC;AACF,GAA4C;AAC1C,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,0CAA0C,GACjEC,IAAaC,EAAA,GAEbC,IAAcC,EAA4B;AAAA,IAC9C,UAAUC,EAAYhB,CAAkB;AAAA,IACxC,eAAe,EAAE,wBAAwBM,KAA0BD,EAAU,CAAC,GAAG,QAAQ,GAAA;AAAA,EAAG,CAC7F,GAEKY,IAAeH,EAAY,aAAa,CAAC,EAAE,wBAAwBI,QAAW;AAClF,IAAAT,EAAWS,CAAI;AAAA,EACjB,CAAC;AAED,2BACGC,GAAA,EAAc,GAAGL,GAChB,UAAA,gBAAAM,EAACC,KAAK,UAAU,MAAA;AAAM,IAAKJ;KACzB,UAAA,gBAAAK,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,IAAA,gBAAAH,EAACR,EAAW,SAAX,EAAmB,IAAG,MAAM,UAAAF,EAAE,sBAAsB,GAAE;AAAA,IACvD,gBAAAY,EAACC,GAAA,EAAK,eAAc,UAAS,KAAK,IAChC,UAAA;AAAA,MAAA,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAOd,EAAE,+BAA+B;AAAA,UACxC,aAAaA,EAAE,qCAAqC;AAAA,UACpD,aAAY;AAAA,UACZ,SAASL,EAAU,IAAI,CAAAF,OAAa;AAAA,YAClC,OAAOA,EAAS;AAAA,YAChB,OAAOD,EAAcC,CAAQ;AAAA,UAAA,EAC7B;AAAA,QAAA;AAAA,MAAA;AAAA,MAEJ,gBAAAiB,EAAC,OAAA,EACC,UAAA,gBAAAA,EAACR,EAAW,QAAX,EAAkB,SAAQ,aAAY,SAASJ,GAC7C,UAAAE,EAAE,gCAAgC,GACrC,EAAA,CACF;AAAA,IAAA,GACF;AAAA,sBACCe,GAAA,EACC,UAAA;AAAA,MAAA,gBAAAL,EAACR,EAAW,QAAX,EAAkB,SAAQ,aAAY,SAASL,GAC7C,UAAAG,EAAE,SAAS,EAAA,CACd;AAAA,MACA,gBAAAU,EAACR,EAAW,QAAX,EAAkB,SAAQ,WAAU,MAAK,UAAS,YAAYP,EAAU,WAAW,GACjF,UAAAK,EAAE,aAAa,EAAA,CAClB;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,CACF,GACF,GACF;AAEJ;"}