@zeniai/web-components 4.3.40 → 4.3.41

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 (108) hide show
  1. package/dist/{SessionTimeoutPopup-BWBsmq2A.cjs → SessionTimeoutPopup-B6IhYc5j.cjs} +17448 -15784
  2. package/dist/{SessionTimeoutPopup-B-WVI7aL.js → SessionTimeoutPopup-TT3Z0Y7j.js} +102699 -96364
  3. package/dist/appLocale.d.ts +356 -13
  4. package/dist/assets/interface/avatars-without-pic.svg +12 -0
  5. package/dist/cockpit.cjs.js +2 -2
  6. package/dist/cockpit.esm.js +760 -759
  7. package/dist/components/address/addressHelper.d.ts +2 -2
  8. package/dist/components/common/Picker.d.ts +3 -1
  9. package/dist/components/common/allNavBars/statusSwitcher/switcherTypes.d.ts +1 -0
  10. package/dist/components/common/tooltipVariants/types.d.ts +11 -9
  11. package/dist/components/commonSetUp/approval/ApprovalRuleSection.d.ts +11 -2
  12. package/dist/components/commonSetUp/approval/ApprovalStageRow.d.ts +37 -12
  13. package/dist/components/commonSetUp/approval/ApprovalStagesSection.d.ts +8 -2
  14. package/dist/components/commonSetUp/approval/ConditionRow.d.ts +10 -1
  15. package/dist/components/commonSetUp/approval/FormSection.d.ts +19 -3
  16. package/dist/components/commonSetUp/approval/RuleOverlapBanner.d.ts +63 -17
  17. package/dist/components/commonSetUp/approval/RuleOverlapCard.d.ts +10 -1
  18. package/dist/components/commonSetUp/approval/detectDuplicateRule.d.ts +12 -0
  19. package/dist/components/commonSetUp/approval/formatFallbackRuleChain.d.ts +12 -0
  20. package/dist/components/expenseAutomation/ExpenseAutomationPage.d.ts +41 -6
  21. package/dist/components/expenseAutomation/components/NavBarWithHeader.d.ts +21 -5
  22. package/dist/components/expenseAutomation/components/navbarHeaderData.d.ts +3 -4
  23. package/dist/components/expenseAutomation/sections/accountRecon/AccountReconDetailsDrawerPageV2.d.ts +3 -1
  24. package/dist/components/expenseAutomation/sections/accountRecon/CombinedStatementAccountMappingSection.d.ts +2 -2
  25. package/dist/components/expenseAutomation/sections/accountRecon/StatementProcessingPage.d.ts +0 -1
  26. package/dist/components/expenseAutomation/sections/accountRecon/statementProcessingHelpers.d.ts +2 -0
  27. package/dist/components/expenseAutomation/sections/jeSchedules/JESchedulePage.d.ts +30 -5
  28. package/dist/components/expenseAutomation/sections/jeSchedules/JESchedulePageSkeleton.d.ts +5 -0
  29. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualBillingPatternCard.d.ts +14 -0
  30. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualCalculationBreakdownCard.d.ts +26 -0
  31. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualDetailsSection.d.ts +31 -0
  32. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualFeedbackDialog.d.ts +27 -0
  33. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualFeedbackDialog.test.d.ts +1 -0
  34. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualHeader.d.ts +16 -0
  35. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualSequenceSection.d.ts +22 -0
  36. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEOneTimeAccrualDetailPage.d.ts +28 -0
  37. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/accrualActions.d.ts +24 -0
  38. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/accrualFieldHelpers.d.ts +18 -0
  39. package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/accrualFieldHelpers.test.d.ts +1 -0
  40. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEBaseTransactionSearch.d.ts +23 -0
  41. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEBaseTransactionSearch.test.d.ts +1 -0
  42. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEExistingKpiStrip.d.ts +7 -0
  43. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEGroupSectionHeader.d.ts +8 -0
  44. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEJournalEntryPreview.d.ts +28 -0
  45. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEKpiStrip.d.ts +8 -0
  46. package/dist/components/expenseAutomation/sections/jeSchedules/{JEScheduleAccountSettings.d.ts → common/JEScheduleAccountSettings.d.ts} +2 -2
  47. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleCreatedBy.d.ts +21 -0
  48. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleCreatedBy.test.d.ts +1 -0
  49. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleLifecycle.d.ts +19 -0
  50. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleLifecycle.test.d.ts +1 -0
  51. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleNewEntryButton.d.ts +14 -0
  52. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleNewEntryButton.test.d.ts +1 -0
  53. package/dist/components/expenseAutomation/sections/jeSchedules/common/JESchedulePreview.d.ts +18 -0
  54. package/dist/components/expenseAutomation/sections/jeSchedules/common/JEScheduleRadioCardGroup.d.ts +27 -0
  55. package/dist/components/expenseAutomation/sections/jeSchedules/{JEScheduleResolveComponent.d.ts → common/JEScheduleResolveComponent.d.ts} +3 -3
  56. package/dist/components/expenseAutomation/sections/jeSchedules/{JEScheduleResolveListRow.d.ts → common/JEScheduleResolveListRow.d.ts} +4 -11
  57. package/dist/components/expenseAutomation/sections/jeSchedules/common/JETypeFilterBar.d.ts +8 -0
  58. package/dist/components/expenseAutomation/sections/jeSchedules/common/jeScheduleKpiHelpers.d.ts +14 -0
  59. package/dist/components/expenseAutomation/sections/jeSchedules/common/newScheduleCopy.test.d.ts +1 -0
  60. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEOneTimeAccrualCell.d.ts +12 -0
  61. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleDownloadRangeDialog.d.ts +18 -0
  62. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleDownloadRangeDialog.test.d.ts +1 -0
  63. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleDraftListRow.d.ts +16 -0
  64. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleGroupList.d.ts +53 -0
  65. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleListWrapperRow.d.ts +39 -0
  66. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleListWrapperRow.test.d.ts +1 -0
  67. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleReadOnlyListRow.d.ts +15 -0
  68. package/dist/components/expenseAutomation/sections/jeSchedules/list/JEScheduleReadOnlyListRow.test.d.ts +1 -0
  69. package/dist/components/expenseAutomation/sections/jeSchedules/{jeSchedule.helpers.d.ts → list/jeSchedule.helpers.d.ts} +1 -1
  70. package/dist/components/expenseAutomation/sections/jeSchedules/list/jeScheduleConfig.d.ts +46 -0
  71. package/dist/components/expenseAutomation/sections/jeSchedules/list/jeScheduleListItems.d.ts +56 -0
  72. package/dist/components/expenseAutomation/sections/jeSchedules/list/jeScheduleListRow.helpers.d.ts +29 -0
  73. package/dist/components/expenseAutomation/sections/jeSchedules/list/jeScheduleListRow.helpers.test.d.ts +1 -0
  74. package/dist/components/expenseAutomation/sections/jeSchedules/sections/JEExistingSection.d.ts +22 -0
  75. package/dist/components/expenseAutomation/sections/jeSchedules/sections/JESchedulesSection.d.ts +27 -0
  76. package/dist/components/expenseAutomation/sections/jeSchedules/sections/JESummarySection.d.ts +7 -0
  77. package/dist/components/expenseAutomation/sections/jeSchedules/sections/NewJEScheduleSection.d.ts +59 -0
  78. package/dist/components/expenseAutomation/sections/jeSchedules/sections/NewScheduleDocumentAutofillPanel.d.ts +11 -0
  79. package/dist/components/formElements/formattedTextField/FormattedTextField.d.ts +3 -1
  80. package/dist/components/formElements/multiSelectField/MultiSelectField.d.ts +13 -1
  81. package/dist/components/formElements/textField/TextField.d.ts +3 -1
  82. package/dist/components/jeSchedules/downloadJESchedules/types/downloadJESchedulesOptionsPayload.d.ts +3 -1
  83. package/dist/components/jeSchedules/scheduleDetails/table/ScheduleAccruedSequenceTable.d.ts +2 -1
  84. package/dist/components/jeSchedules/scheduleDetails/table/items/ScheduleAccruedSequenceTableRow.d.ts +6 -1
  85. package/dist/components/singleSelect/SingleSelect.d.ts +12 -1
  86. package/dist/components/singleSelect/SingleSelectField.d.ts +13 -1
  87. package/dist/components/spendManagement/billPay/billPaySetUp/BillPayApprovalRuleDetailPage.d.ts +1 -0
  88. package/dist/components/spendManagement/billPay/billPaySetUp/components/formElements/UserMultiSelect.d.ts +17 -2
  89. package/dist/components/spendManagement/billPay/billPaySetUp/components/formElements/UserMultiSelectField.d.ts +6 -2
  90. package/dist/components/spendManagement/reimbursement/AllReimbursementLineItems.d.ts +1 -1
  91. package/dist/components/spendManagement/reimbursement/reimbursementSetUp/ReimbursementApprovalRuleDetailPage.d.ts +1 -0
  92. package/dist/context/featureProvider/FeatureGateNameConstants.d.ts +8 -3
  93. package/dist/index.cjs.js +1 -1
  94. package/dist/index.d.ts +6 -2
  95. package/dist/index.esm.js +267 -266
  96. package/dist/strings/strings.d.ts +356 -13
  97. package/package.json +5 -5
  98. package/dist/components/expenseAutomation/sections/jeSchedules/JEScheduleDraftListRow.d.ts +0 -19
  99. package/dist/components/expenseAutomation/sections/jeSchedules/JEScheduleListWrapperRow.d.ts +0 -31
  100. package/dist/components/expenseAutomation/sections/jeSchedules/JEScheduleReadOnlyListRow.d.ts +0 -13
  101. package/dist/components/expenseAutomation/sections/jeSchedules/JEScheduleRecommendationIcon.d.ts +0 -13
  102. package/dist/components/expenseAutomation/sections/jeSchedules/JESchedulesList.d.ts +0 -24
  103. package/dist/components/expenseAutomation/sections/jeSchedules/jeScheduleConfig.d.ts +0 -28
  104. package/dist/components/expenseAutomation/sections/jeSchedules/jeScheduleListRow.helpers.d.ts +0 -17
  105. /package/dist/components/expenseAutomation/sections/jeSchedules/{jeScheduleListRow.helpers.test.d.ts → accrualDetail/JEAccrualDetailsSection.test.d.ts} +0 -0
  106. /package/dist/components/expenseAutomation/sections/jeSchedules/{JEScheduleDraftComponent.d.ts → common/JEScheduleDraftComponent.d.ts} +0 -0
  107. /package/dist/components/expenseAutomation/sections/jeSchedules/{JESchedulesListEmptyTable.d.ts → common/JESchedulesListEmptyTable.d.ts} +0 -0
  108. /package/dist/components/expenseAutomation/sections/jeSchedules/{common.d.ts → common/common.d.ts} +0 -0
@@ -0,0 +1,27 @@
1
+ import { default as React } from 'react';
2
+ export interface JEScheduleRadioCardOption {
3
+ label: string;
4
+ value: string;
5
+ description?: string;
6
+ isDisabled?: boolean;
7
+ }
8
+ export interface JEScheduleRadioCardGroupProps {
9
+ /** RHF field path the radio binds to. */
10
+ name: string;
11
+ /** Two or more options, rendered as equal-width columns. */
12
+ options: JEScheduleRadioCardOption[];
13
+ className?: string;
14
+ style?: React.CSSProperties;
15
+ }
16
+ /**
17
+ * Grid of clickable radio cards — generalizes the two-option pattern used by
18
+ * `PolicyModeSelector` (card policy) to an arbitrary option count, for the
19
+ * "Schedule Details" (2-option) and "Schedule type" (4-option) selectors on
20
+ * the JE Schedule creation form. Kept colocated with JE Schedules rather
21
+ * than widening `PolicyModeSelector` itself, since that component's value
22
+ * type is narrowly scoped to card policy. Fixed at 2 columns (options wrap
23
+ * into additional rows) to match this form's design — the only two current
24
+ * consumers are a 2-option row and a 4-option 2x2 grid.
25
+ */
26
+ declare function JEScheduleRadioCardGroup({ name, options, className, style, }: Readonly<JEScheduleRadioCardGroupProps>): import("react/jsx-runtime").JSX.Element;
27
+ export default JEScheduleRadioCardGroup;
@@ -1,7 +1,7 @@
1
1
  import { AccountBase, ClassBase, FetchStateAndError, ID, JEScheduleLocalData, JEScheduleTransactionKey, JEScheduledTransactionWithFailedEntries, ScheduleTypes, UncategorizedAccounts } from '@zeniai/client-epic-state';
2
- import { AutoCompleteActions, AutoCompleteData } from '../../../common/autoComplete/autoCompleteProps';
3
- import { AutoCompleteSingleSelectFieldValue } from '../../../formElements/autoCompleteSingleSelectField/AutoCompleteSingleSelectField';
4
- import { GroupedOption, GroupedSingleSelectFieldValueWithCOT } from '../../../formElements/labeledGroupedSingleSelectWithCOT/GroupedSingleSelectFieldWithCOT';
2
+ import { AutoCompleteActions, AutoCompleteData } from '../../../../common/autoComplete/autoCompleteProps';
3
+ import { AutoCompleteSingleSelectFieldValue } from '../../../../formElements/autoCompleteSingleSelectField/AutoCompleteSingleSelectField';
4
+ import { GroupedOption, GroupedSingleSelectFieldValueWithCOT } from '../../../../formElements/labeledGroupedSingleSelectWithCOT/GroupedSingleSelectFieldWithCOT';
5
5
  declare const jeScheduleId: "jeSchedulePage";
6
6
  export interface JEScheduleResolveComponentFormData {
7
7
  jeScheduleID: ID;
@@ -1,8 +1,8 @@
1
1
  import { AccountBase, FetchStateAndError, ID, JEScheduleLocalData, JEScheduleTransactionKey, JEScheduledTransactionWithFailedEntries, ScheduleTypes, UncategorizedAccounts } from '@zeniai/client-epic-state';
2
- import { AutoCompleteActions, AutoCompleteData } from '../../../common/autoComplete/autoCompleteProps';
3
- import { GroupedOption } from '../../../formElements/labeledGroupedSingleSelectWithCOT/GroupedSingleSelectFieldWithCOT';
2
+ import { AutoCompleteActions, AutoCompleteData } from '../../../../common/autoComplete/autoCompleteProps';
3
+ import { GroupedOption } from '../../../../formElements/labeledGroupedSingleSelectWithCOT/GroupedSingleSelectFieldWithCOT';
4
+ import { JEScheduleColumnKey } from '../list/jeScheduleConfig';
4
5
  import { JEScheduleResolveComponentFormData } from './JEScheduleResolveComponent';
5
- import { JEScheduleColumnKey } from './jeScheduleConfig';
6
6
  export interface JEScheduleResolveListRowProps {
7
7
  allAccountGroupedOptions: GroupedOption[];
8
8
  allAccountList: AccountBase[];
@@ -10,22 +10,15 @@ export interface JEScheduleResolveListRowProps {
10
10
  allDepAccountList: AccountBase[];
11
11
  dataListColumnKey: JEScheduleColumnKey;
12
12
  draft: JEScheduledTransactionWithFailedEntries;
13
- isJEScheduleCOTEnabled: boolean;
14
13
  localData: JEScheduleLocalData;
15
14
  postStatus: FetchStateAndError;
16
15
  uncategorizedAccounts: UncategorizedAccounts;
17
16
  vendorSearchAutoCompleteActions: AutoCompleteActions;
18
17
  vendorSearchAutoCompleteData: AutoCompleteData;
19
- recommendedCategoryName?: string;
20
- recommendedClassName?: string;
21
- recommendedDepCategoryName?: string;
22
- recommendedPeriodName?: string;
23
- recommendedPostingDateName?: string;
24
- recommendedTypeName?: string;
25
18
  onFormDataChange: (scheduleJournalEntryId: ID, localData: JEScheduleResolveComponentFormData) => void;
26
19
  onPostJESchedule: (scheduledJournalEntryId: ID, jeScheduleTransactionKey: JEScheduleTransactionKey) => void;
27
20
  onReviewClickHandler: (jeScheduleId: ID, jeScheduleKey: JEScheduleTransactionKey, jeScheduleType: ScheduleTypes) => void;
28
21
  onConfirmCategoryRecommendation?: (jeScheduleTransactionKey: JEScheduleTransactionKey, recommendedCategoryId: ID) => void;
29
22
  }
30
- declare const _default: import('react').MemoExoticComponent<({ allAccountGroupedOptions, allAccountList, allDepAccountGroupedOptions, allDepAccountList, dataListColumnKey, draft, isJEScheduleCOTEnabled, localData, postStatus, recommendedCategoryName, recommendedClassName, recommendedDepCategoryName, recommendedPeriodName, recommendedPostingDateName, recommendedTypeName, uncategorizedAccounts, vendorSearchAutoCompleteActions, vendorSearchAutoCompleteData, onConfirmCategoryRecommendation, onFormDataChange, onPostJESchedule, onReviewClickHandler, }: JEScheduleResolveListRowProps) => import("react/jsx-runtime").JSX.Element | null>;
23
+ declare const _default: import('react').MemoExoticComponent<({ allAccountGroupedOptions, allAccountList, allDepAccountGroupedOptions, allDepAccountList, dataListColumnKey, draft, localData, postStatus, uncategorizedAccounts, vendorSearchAutoCompleteActions, vendorSearchAutoCompleteData, onFormDataChange, onPostJESchedule, onReviewClickHandler, }: JEScheduleResolveListRowProps) => import("react/jsx-runtime").JSX.Element | null>;
31
24
  export default _default;
@@ -0,0 +1,8 @@
1
+ import { ScheduleTypes } from '@zeniai/client-epic-state';
2
+ export interface JETypeFilterBarProps {
3
+ counts: Partial<Record<ScheduleTypes, number>>;
4
+ selectedFilter: ScheduleTypes | null;
5
+ onFilterChange: (filter: ScheduleTypes | null) => void;
6
+ }
7
+ declare function JETypeFilterBar({ counts, selectedFilter, onFilterChange, }: Readonly<JETypeFilterBarProps>): import("react/jsx-runtime").JSX.Element;
8
+ export default JETypeFilterBar;
@@ -0,0 +1,14 @@
1
+ import { Amount, JEScheduleRow } from '@zeniai/client-epic-state';
2
+ export declare const KPI_TILE_BREAKDOWN_PLACEHOLDER = "\u00A0";
3
+ /**
4
+ * Takes an Amount, not a number: the tiles used to print a hardcoded "$", which is wrong for any
5
+ * tenant that does not bill in dollars. "0,0" keeps the whole-dollar presentation the KPI design
6
+ * asks for -- the amount is rounded, not shown to cents.
7
+ */
8
+ export declare function formatAmount(amount: Amount): string;
9
+ export declare function buildTypeBreakdown(schedules: JEScheduleRow[], abbreviations: Record<string, string>): string;
10
+ export interface TypeBreakdownItem {
11
+ amount: string;
12
+ text: string;
13
+ }
14
+ export declare function buildTypeBreakdownItems(schedules: JEScheduleRow[], labels: Record<string, string>): TypeBreakdownItem[];
@@ -0,0 +1,12 @@
1
+ import { ID, JEOneTimeAccrual } from '@zeniai/client-epic-state';
2
+ import { JEScheduleColumnKey } from './jeScheduleConfig';
3
+ export interface JEOneTimeAccrualCellProps {
4
+ dataListColumnKey: JEScheduleColumnKey;
5
+ row: JEOneTimeAccrual;
6
+ isActionInProgress?: boolean;
7
+ onIgnoreOneTimeAccrual?: (accrualId: ID) => void;
8
+ onRevertOneTimeAccrual?: (accrualId: ID) => void;
9
+ onReviewOneTimeAccrual?: (accrualId: ID) => void;
10
+ }
11
+ declare const _default: import('react').MemoExoticComponent<({ dataListColumnKey, row, isActionInProgress, onIgnoreOneTimeAccrual, onReviewOneTimeAccrual, onRevertOneTimeAccrual, }: JEOneTimeAccrualCellProps) => import("react/jsx-runtime").JSX.Element | null>;
12
+ export default _default;
@@ -0,0 +1,18 @@
1
+ import { ZeniDate } from '@zeniai/client-epic-state';
2
+ export interface JEScheduleDownloadRangeDialogProps {
3
+ isDownloading: boolean;
4
+ isOpen: boolean;
5
+ onClose: () => void;
6
+ /** `fromMonth` is the first month to include; the caller pairs it with today as the end. */
7
+ onConfirm: (fromMonth: ZeniDate) => void;
8
+ }
9
+ /**
10
+ * Asks which month to search from before exporting completed schedules.
11
+ *
12
+ * The end is always today, so only the start is a question. It is a month selector rather than a date
13
+ * picker because accounting filters these schedules on month boundaries -- prepaid and fixed assets on
14
+ * base transaction date, accrued on the schedule's own start_date -- so a day-level start would imply
15
+ * precision the query does not have.
16
+ */
17
+ declare const JEScheduleDownloadRangeDialog: ({ isOpen, isDownloading, onClose, onConfirm, }: Readonly<JEScheduleDownloadRangeDialogProps>) => import("react/jsx-runtime").JSX.Element;
18
+ export default JEScheduleDownloadRangeDialog;
@@ -0,0 +1,16 @@
1
+ import { FetchStateAndError, ID, JEScheduleRow, JEScheduleTransactionKey, ScheduleTypes } from '@zeniai/client-epic-state';
2
+ import { JEScheduleColumnKey } from './jeScheduleConfig';
3
+ export interface JEScheduleDraftListRowProps {
4
+ dataListColumnKey: JEScheduleColumnKey;
5
+ draft: JEScheduleRow;
6
+ ignoreStatus?: FetchStateAndError;
7
+ isActionInProgress?: boolean;
8
+ ignoreRecommendedJeSchedule: (jeScheduleTransactionKey: JEScheduleTransactionKey, scheduleType: ScheduleTypes) => void;
9
+ onReviewClickHandler: (jeScheduleId: ID, jeScheduleKey: JEScheduleTransactionKey, jeScheduleType: ScheduleTypes) => void;
10
+ onConfirmCategoryRecommendation?: (jeScheduleTransactionKey: JEScheduleTransactionKey, recommendedCategoryId: ID) => void;
11
+ onIgnoreOneTimeAccrual?: (accrualId: ID) => void;
12
+ onRevertOneTimeAccrual?: (accrualId: ID) => void;
13
+ onReviewOneTimeAccrual?: (accrualId: ID) => void;
14
+ }
15
+ declare const _default: import('react').MemoExoticComponent<({ dataListColumnKey, draft, ignoreRecommendedJeSchedule, ignoreStatus, onReviewClickHandler, isActionInProgress, onIgnoreOneTimeAccrual, onReviewOneTimeAccrual, onRevertOneTimeAccrual, }: JEScheduleDraftListRowProps) => import("react/jsx-runtime").JSX.Element | null>;
16
+ export default _default;
@@ -0,0 +1,53 @@
1
+ import { MouseEvent } from 'react';
2
+ import { ExpenseAutomationJESchedulesViewSelector, ID, JEScheduleKey, JEScheduleTransactionKey, ScheduleTypes } from '@zeniai/client-epic-state';
3
+ import { AutoCompleteActions, AutoCompleteData } from '../../../../common/autoComplete/autoCompleteProps';
4
+ import { JEScheduleResolveComponentFormData } from '../common/JEScheduleResolveComponent';
5
+ import { JEScheduleHeaderItemData } from './jeScheduleConfig';
6
+ import { JEScheduleListGroup } from './jeScheduleListItems';
7
+ import { JEScheduleRowKey } from './jeScheduleListRow.helpers';
8
+ export type SortDirection = "asc" | "desc";
9
+ export interface SortState {
10
+ columnKey: string;
11
+ direction: SortDirection;
12
+ }
13
+ export interface JEScheduleGroupListItemData {
14
+ accountListNestedAccountHierarchy: ExpenseAutomationJESchedulesViewSelector["accountListNestedAccountHierarchy"];
15
+ allAccountList: ExpenseAutomationJESchedulesViewSelector["allAccountList"];
16
+ allDepreciationAccountList: ExpenseAutomationJESchedulesViewSelector["allDepreciationAccountList"];
17
+ allDepreciationAccountListNestedAccountHierarchy: ExpenseAutomationJESchedulesViewSelector["allDepreciationAccountListNestedAccountHierarchy"];
18
+ classListNestedAccountHierarchy: ExpenseAutomationJESchedulesViewSelector["classListNestedAccountHierarchy"];
19
+ ignoreStatusById: ExpenseAutomationJESchedulesViewSelector["ignoreStatusById"];
20
+ localDataByID: ExpenseAutomationJESchedulesViewSelector["jeScheduleLocalDataById"];
21
+ oneTimeAccrualActionStatusById: ExpenseAutomationJESchedulesViewSelector["oneTimeAccrualActionStatusById"];
22
+ postStatusById: ExpenseAutomationJESchedulesViewSelector["postStatusById"];
23
+ uncategorizedAccounts: ExpenseAutomationJESchedulesViewSelector["uncategorizedAccounts"];
24
+ vendorSearchAutoCompleteActions: AutoCompleteActions;
25
+ vendorSearchAutoCompleteData: AutoCompleteData;
26
+ forcePostedLabel?: boolean;
27
+ revertStatusById?: ExpenseAutomationJESchedulesViewSelector["revertStatusById"];
28
+ handleJeScheduleClick: (jeScheduleId: ID, jeScheduleKey: JEScheduleRowKey, jeScheduleType: ScheduleTypes) => void;
29
+ ignoreRecommendedJeSchedule: (jeScheduleTransactionKey: JEScheduleTransactionKey, scheduleType: ScheduleTypes) => void;
30
+ jeScheduleClickHandler: (event: MouseEvent<HTMLDivElement>, jeScheduleId: ID, jescheduleKey: JEScheduleRowKey, jeScheduleType: ScheduleTypes) => void;
31
+ onIgnoreOneTimeAccrual: (accrualId: ID) => void;
32
+ onJESchedulesFormDataChange: (scheduleJournalEntryId: ID, localData: JEScheduleResolveComponentFormData) => void;
33
+ onOneTimeAccrualClick: (accrualId: ID) => void;
34
+ onPostJESchedule: (scheduledJournalEntryId: ID, jeScheduleTransactionKey: JEScheduleTransactionKey) => void;
35
+ onRevertOneTimeAccrual: (accrualId: ID) => void;
36
+ onReviewClickHandler: (jeScheduleId: ID, jescheduleKey: JEScheduleRowKey, jeScheduleType: ScheduleTypes) => void;
37
+ onConfirmCategoryRecommendation?: (jeScheduleTransactionKey: JEScheduleTransactionKey, recommendedCategoryId: ID) => void;
38
+ onRevertJeSchedule?: (jeScheduleId: ID, jeScheduleTransactionKey: JEScheduleKey | JEScheduleTransactionKey, jeScheduleType: ScheduleTypes) => void;
39
+ }
40
+ export interface JEScheduleGroupListProps {
41
+ activeHeaderItems: JEScheduleHeaderItemData[];
42
+ /**
43
+ * Rendered in order as one table. Callers must memoize this: an array literal changes identity on
44
+ * every render, which would rebuild the item list and re-render every row.
45
+ */
46
+ groups: readonly JEScheduleListGroup[];
47
+ listItemData: JEScheduleGroupListItemData;
48
+ sortState: SortState;
49
+ testIdSuffix: string;
50
+ onHeaderClick: (col: JEScheduleHeaderItemData) => void;
51
+ }
52
+ declare function JEScheduleGroupList({ activeHeaderItems, groups, listItemData, sortState, testIdSuffix, onHeaderClick, }: Readonly<JEScheduleGroupListProps>): import("react/jsx-runtime").JSX.Element;
53
+ export default JEScheduleGroupList;
@@ -0,0 +1,39 @@
1
+ import { AccountBase, FetchStateAndError, ID, JEScheduleKey, JEScheduleLocalData, JEScheduleRow, JEScheduleTransactionKey, NestedAccountHierarchyForReport, NestedClassHierarchyForReport, ScheduleTypes, UncategorizedAccounts } from '@zeniai/client-epic-state';
2
+ import { AutoCompleteActions, AutoCompleteData } from '../../../../common/autoComplete/autoCompleteProps';
3
+ import { TextAlign } from '../../../../dataListTable';
4
+ import { JEScheduleResolveComponentFormData } from '../common/JEScheduleResolveComponent';
5
+ import { JEScheduleColumnKey } from './jeScheduleConfig';
6
+ import { JEScheduleRowKey } from './jeScheduleListRow.helpers';
7
+ export interface JEScheduleListWrapperRowProps {
8
+ accountListNestedAccountHierarchy: NestedAccountHierarchyForReport[];
9
+ allAccountList: AccountBase[];
10
+ allDepAccountList: AccountBase[];
11
+ allDepreciationAccountListNestedAccountHierarchy: NestedAccountHierarchyForReport[];
12
+ classListNestedAccountHierarchy: NestedClassHierarchyForReport[];
13
+ dataListColumnKey: JEScheduleColumnKey;
14
+ ignoreStatusById: Record<string, FetchStateAndError>;
15
+ localDataByID: Record<string, JEScheduleLocalData>;
16
+ oneTimeAccrualActionStatusById: Record<string, FetchStateAndError>;
17
+ postStatusById: Record<string, FetchStateAndError>;
18
+ row: JEScheduleRow;
19
+ uncategorizedAccounts: UncategorizedAccounts;
20
+ vendorSearchAutoCompleteActions: AutoCompleteActions;
21
+ vendorSearchAutoCompleteData: AutoCompleteData;
22
+ align?: TextAlign;
23
+ cellPadding?: string;
24
+ forcePostedLabel?: boolean;
25
+ isReadOnly?: boolean;
26
+ revertStatusById?: Record<string, FetchStateAndError>;
27
+ ignoreRecommendedJeSchedule: (jeScheduleTransactionKey: JEScheduleTransactionKey, scheduleType: ScheduleTypes) => void;
28
+ jeScheduleClickHandler: (event: React.MouseEvent<HTMLDivElement>, jeScheduleId: ID, jeScheduleKey: JEScheduleRowKey, jeScheduleType: ScheduleTypes) => void;
29
+ onFormDataChange: (scheduleJournalEntryId: ID, localData: JEScheduleResolveComponentFormData) => void;
30
+ onIgnoreOneTimeAccrual: (accrualId: ID) => void;
31
+ onOneTimeAccrualClick: (accrualId: ID) => void;
32
+ onPostJESchedule: (scheduledJournalEntryId: ID, jeScheduleTransactionKey: JEScheduleTransactionKey) => void;
33
+ onRevertOneTimeAccrual: (accrualId: ID) => void;
34
+ onReviewClickHandler: (jeScheduleId: ID, jeScheduleKey: JEScheduleRowKey, jeScheduleType: ScheduleTypes) => void;
35
+ onConfirmCategoryRecommendation?: (jeScheduleTransactionKey: JEScheduleTransactionKey, recommendedCategoryId: ID) => void;
36
+ onRevertJeSchedule?: (jeScheduleId: ID, jeScheduleTransactionKey: JEScheduleKey | JEScheduleTransactionKey, jeScheduleType: ScheduleTypes) => void;
37
+ }
38
+ declare const _default: import('react').MemoExoticComponent<({ accountListNestedAccountHierarchy, align, cellPadding, allAccountList, allDepAccountList, allDepreciationAccountListNestedAccountHierarchy, dataListColumnKey, forcePostedLabel, ignoreStatusById, oneTimeAccrualActionStatusById, revertStatusById, isReadOnly, localDataByID, postStatusById, row, uncategorizedAccounts, vendorSearchAutoCompleteActions, vendorSearchAutoCompleteData, ignoreRecommendedJeSchedule, jeScheduleClickHandler, onFormDataChange, onOneTimeAccrualClick, onPostJESchedule, onIgnoreOneTimeAccrual, onRevertOneTimeAccrual, onRevertJeSchedule, onReviewClickHandler, }: JEScheduleListWrapperRowProps) => import("react/jsx-runtime").JSX.Element>;
39
+ export default _default;
@@ -0,0 +1,15 @@
1
+ import { FetchStateAndError, ID, JEScheduleKey, JEScheduleRow, JEScheduleTransactionKey, ScheduleTypes } from '@zeniai/client-epic-state';
2
+ import { JEScheduleColumnKey } from './jeScheduleConfig';
3
+ export interface JEScheduleReadOnlyListRowProps {
4
+ dataListColumnKey: JEScheduleColumnKey;
5
+ row: JEScheduleRow;
6
+ forcePostedLabel?: boolean;
7
+ isActionInProgress?: boolean;
8
+ revertStatus?: FetchStateAndError;
9
+ onIgnoreOneTimeAccrual?: (accrualId: ID) => void;
10
+ onRevertJeSchedule?: (jeScheduleId: ID, jeScheduleTransactionKey: JEScheduleKey | JEScheduleTransactionKey, jeScheduleType: ScheduleTypes) => void;
11
+ onRevertOneTimeAccrual?: (accrualId: ID) => void;
12
+ onReviewOneTimeAccrual?: (accrualId: ID) => void;
13
+ }
14
+ declare const _default: import('react').MemoExoticComponent<({ dataListColumnKey, isActionInProgress, onIgnoreOneTimeAccrual, onReviewOneTimeAccrual, onRevertOneTimeAccrual, forcePostedLabel, revertStatus, onRevertJeSchedule, row, }: JEScheduleReadOnlyListRowProps) => import("react/jsx-runtime").JSX.Element | null>;
15
+ export default _default;
@@ -1,4 +1,4 @@
1
1
  import { ID, JEScheduleFieldRecommendation, NestedAccountHierarchyForReport, NestedClassHierarchyForReport } from '@zeniai/client-epic-state';
2
- import { GroupedOption } from '../../../formElements/labeledGroupedSingleSelectWithCOT/GroupedSingleSelectFieldWithCOT';
2
+ import { GroupedOption } from '../../../../formElements/labeledGroupedSingleSelectWithCOT/GroupedSingleSelectFieldWithCOT';
3
3
  export declare const getGroupedAccountOptionsForJESchedule: (allAccounts: NestedAccountHierarchyForReport[], accountId?: ID, fieldRecommendation?: JEScheduleFieldRecommendation, type?: string) => GroupedOption[];
4
4
  export declare const getGroupedClassOptionsForJESchedule: (allClasses: NestedClassHierarchyForReport[], classId?: ID, fieldRecommendation?: JEScheduleFieldRecommendation) => GroupedOption[];
@@ -0,0 +1,46 @@
1
+ import { JEPageTab, JournalEntryErrorCodeType } from '@zeniai/client-epic-state';
2
+ import { TabSwitcherOption } from '../../../../common/allNavBars/statusSwitcher/switcherTypes';
3
+ import { TextAlign } from '../../../../dataListTable';
4
+ export type JEScheduleMainTab = JEPageTab;
5
+ export type JEScheduleColumnKey = "vendor" | "category" | "class" | "depCategory" | "scheduleCategory" | "startMonth" | "type" | "amortizationPeriod" | "jePostingDate" | "remainingMonths" | "runningBalance" | "monthlyAmount" | "totalAmount" | "action" | "transactionDate" | "memo" | "createdBy" | "lifecycle" | "period";
6
+ export type JEScheduleGroupKey = "pending_review" | "created" | "existing";
7
+ export type JESchedulePendingSubTab = "all" | "create" | "resolve";
8
+ export type JEScheduleOngoingCompletedSubTab = "all" | "ai_accountant" | "manual";
9
+ export type JEScheduleSubTab = JESchedulePendingSubTab | JEScheduleOngoingCompletedSubTab;
10
+ export interface JEScheduleHeaderItemData {
11
+ align: TextAlign;
12
+ headerPadding: string;
13
+ key: JEScheduleColumnKey;
14
+ sortable: boolean;
15
+ value: string;
16
+ width: number;
17
+ cellPadding?: string;
18
+ /** Keeps the track at exactly `width` instead of letting it flex, so it cannot grow dead space. */
19
+ fixedWidth?: boolean;
20
+ stickyRight?: boolean;
21
+ }
22
+ export declare const ESTIMATED_ROW_HEIGHT = 64;
23
+ export declare const COT_ICON_SIZE_PX = 16;
24
+ /**
25
+ * The Action cell's error-icon slot, reserved whether or not the row has an error to report.
26
+ *
27
+ * Only resolve rows raise one, and both action renderers centre their content, so a row with the
28
+ * icon used to sit 10px left of a row without it. Every Action cell now reserves the same slot.
29
+ */
30
+ export declare const ACTION_ERROR_ICON_SIZE_PX = 12;
31
+ export declare const COT_ICON_GAP_PX: number;
32
+ export declare const jeScheduleHeaderItemsData: JEScheduleHeaderItemData[];
33
+ export declare const existingHeaderItemsData: JEScheduleHeaderItemData[];
34
+ /**
35
+ * Which column fixes each posting error, or undefined when nothing on the row can.
36
+ *
37
+ * The resolve row swaps a cell for a picker when its error is present, so an error whose column is
38
+ * rendered is already visible and actionable there. Only the rest need surfacing in the Action
39
+ * column, or the tooltip just repeats what the row already shows.
40
+ */
41
+ export declare const FIX_COLUMN_BY_ERROR_CODE: Record<JournalEntryErrorCodeType, JEScheduleColumnKey | undefined>;
42
+ /** The errors a row cannot show inline, because their column is not in this tab's column set. */
43
+ export declare function errorsNotShownInColumns(errorCodes: JournalEntryErrorCodeType[]): JournalEntryErrorCodeType[];
44
+ export declare function getColumnsForGroupKey(groupKey: JEScheduleGroupKey, isAccountingClassesEnabled: boolean): JEScheduleHeaderItemData[];
45
+ export declare const PENDING_SUB_TABS: TabSwitcherOption[];
46
+ export declare const ONGOING_COMPLETED_SUB_TABS: TabSwitcherOption[];
@@ -0,0 +1,56 @@
1
+ import { JEScheduleRow } from '@zeniai/client-epic-state';
2
+ import { JEScheduleGroupKey } from './jeScheduleConfig';
3
+ /**
4
+ * One group of schedules, optionally introduced by a collapsible group row.
5
+ *
6
+ * `groupRow` is absent for a list that is just a table — the Existing tab — which is what used to be
7
+ * expressed by a `hideGroupHeader` flag alongside a title and an `onToggle` nobody called.
8
+ */
9
+ export interface JEScheduleListGroup {
10
+ data: JEScheduleRow[];
11
+ groupKey: JEScheduleGroupKey;
12
+ isPendingReview: boolean;
13
+ groupRow?: {
14
+ isCollapsed: boolean;
15
+ title: string;
16
+ onToggle: () => void;
17
+ };
18
+ }
19
+ /**
20
+ * A single flat sequence of group rows and schedule rows, so both render inside one virtualized list
21
+ * and therefore one table with one column header.
22
+ *
23
+ * `isPendingReview` rides on the row rather than the list because a merged list holds both kinds. It
24
+ * is recorded here, from the group the row arrived in, and must never be re-derived from the row: a
25
+ * resolve row lives in the pending group but does not satisfy `isPendingReviewRow`, so deriving it
26
+ * would quietly turn every resolve row read-only and strip its pickers and Post button.
27
+ */
28
+ export type JEScheduleListItem = {
29
+ count: number;
30
+ groupKey: JEScheduleGroupKey;
31
+ isCollapsed: boolean;
32
+ kind: "group";
33
+ title: string;
34
+ onToggle: () => void;
35
+ } | {
36
+ groupKey: JEScheduleGroupKey;
37
+ isPendingReview: boolean;
38
+ kind: "row";
39
+ row: JEScheduleRow;
40
+ };
41
+ /**
42
+ * Flatten groups into list items.
43
+ *
44
+ * An empty group contributes nothing at all, not even its group row — the two-table version achieved
45
+ * that with `length > 0` guards at the call site.
46
+ *
47
+ * A collapsed group keeps its group row and drops its schedule rows, which is what makes the chevron
48
+ * work without unmounting the table.
49
+ */
50
+ export declare function buildJEScheduleListItems(groups: readonly JEScheduleListGroup[]): JEScheduleListItem[];
51
+ /**
52
+ * Prefixed with the group key deliberately. The same schedule can appear as a resolve row in one
53
+ * group and an ongoing row in another while sharing a `jeScheduleTransactionKey`; separate tables
54
+ * made that harmless, one list would give react-window two items with the same key.
55
+ */
56
+ export declare function getJEScheduleListItemKey(item: JEScheduleListItem): string;
@@ -0,0 +1,29 @@
1
+ import { JEOneTimeAccrualKey, JEScheduleKey, JEScheduleRow, JEScheduleTransactionKey } from '@zeniai/client-epic-state';
2
+ import { ChainOfThoughtData } from '../../../../common/tooltipVariants/types';
3
+ /**
4
+ * The chain-of-thought popover shown on the "Created by" cell of an AI Accountant row.
5
+ *
6
+ * Returns null when the agent recorded no reasoning for this schedule. That means "no popover", not
7
+ * "no icon" -- the caller still renders the AI icon, so the column looks the same whether or not a
8
+ * given row happens to carry a summary.
9
+ */
10
+ export declare function buildJEScheduleSummaryCOTData(row: JEScheduleRow): ChainOfThoughtData | null;
11
+ export declare function getJEPostingDateText(schedule: JEScheduleRow, hyphen: string): string;
12
+ export declare function getRemainingMonthsText(schedule: JEScheduleRow, hyphen: string): string;
13
+ /**
14
+ * Any kind of row identity a JE Schedules row can carry: a base-transaction key for prepaid /
15
+ * fixed assets, a schedule key for accrued schedules, or an accrual key for one-time accruals —
16
+ * neither of the latter two has a base transaction.
17
+ */
18
+ export type JEScheduleRowKey = JEOneTimeAccrualKey | JEScheduleTransactionKey | JEScheduleKey;
19
+ /**
20
+ * Stable per-row identity for React keys, data-testids and row commenting.
21
+ */
22
+ export declare function getJEScheduleRowKey(row: JEScheduleRow): JEScheduleRowKey;
23
+ /**
24
+ * Whether a row click started inside interactive cell content and so should not navigate.
25
+ *
26
+ * Walks ancestors rather than checking the target alone: a click usually lands on a nested span or
27
+ * svg inside the button, not on the container that carries the class.
28
+ */
29
+ export declare function isInteractiveCellClick(target: EventTarget | null): boolean;
@@ -0,0 +1,22 @@
1
+ import { ExpenseAutomationJESchedulesViewSelector, ID, JEScheduleTransactionKey, ScheduleTypes } from '@zeniai/client-epic-state';
2
+ import { AutoCompleteActions, AutoCompleteData } from '../../../../common/autoComplete/autoCompleteProps';
3
+ import { FooterFormIdType } from '../../../common';
4
+ import { JEAccrualFeedbackReason } from '../accrualDetail/JEAccrualFeedbackDialog';
5
+ import { JEScheduleResolveComponentFormData } from '../common/JEScheduleResolveComponent';
6
+ import { JEScheduleRowKey } from '../list/jeScheduleListRow.helpers';
7
+ export interface JEExistingSectionProps {
8
+ isAccountingClassesEnabled: boolean;
9
+ jeSchedules: ExpenseAutomationJESchedulesViewSelector;
10
+ vendorSearchAutoCompleteActions: AutoCompleteActions;
11
+ vendorSearchAutoCompleteData: AutoCompleteData;
12
+ handleJeScheduleClick: (jeScheduleId: ID, jeScheduleKey: JEScheduleRowKey, jeScheduleType: ScheduleTypes) => void;
13
+ ignoreRecommendedJeSchedule: (jeScheduleTransactionKey: JEScheduleTransactionKey, scheduleType: ScheduleTypes, reason: JEAccrualFeedbackReason, note?: string) => void;
14
+ onJESchedulesFormDataChange: (scheduleJournalEntryId: ID, localData: JEScheduleResolveComponentFormData) => void;
15
+ onOneTimeAccrualClick: (accrualId: ID) => void;
16
+ onOneTimeAccrualFeedback: (accrualId: ID, action: "ignore" | "revert", reason: JEAccrualFeedbackReason, note?: string) => void;
17
+ onPostJESchedule: (scheduledJournalEntryId: ID, jeScheduleTransactionKey: JEScheduleTransactionKey) => void;
18
+ onUpdateJEScheduleTypeFilter: (filter: ScheduleTypes | null) => void;
19
+ setCurrentFooterFormId: (formId: FooterFormIdType) => void;
20
+ }
21
+ declare function JEExistingSection({ isAccountingClassesEnabled, jeSchedules, vendorSearchAutoCompleteActions, vendorSearchAutoCompleteData, handleJeScheduleClick, onOneTimeAccrualClick, onOneTimeAccrualFeedback, ignoreRecommendedJeSchedule, onJESchedulesFormDataChange, onPostJESchedule, onUpdateJEScheduleTypeFilter, }: Readonly<JEExistingSectionProps>): import("react/jsx-runtime").JSX.Element;
22
+ export default JEExistingSection;
@@ -0,0 +1,27 @@
1
+ import { ExpenseAutomationJESchedulesViewSelector, ExpenseAutomationJESchedulesViewUIState, ID, JEScheduleKey, JEScheduleTransactionKey, ScheduleTypes } from '@zeniai/client-epic-state';
2
+ import { AutoCompleteActions, AutoCompleteData } from '../../../../common/autoComplete/autoCompleteProps';
3
+ import { FooterFormIdType } from '../../../common';
4
+ import { JEAccrualFeedbackReason } from '../accrualDetail/JEAccrualFeedbackDialog';
5
+ import { JEScheduleResolveComponentFormData } from '../common/JEScheduleResolveComponent';
6
+ import { JEScheduleRowKey } from '../list/jeScheduleListRow.helpers';
7
+ export interface JESchedulesSectionProps {
8
+ isAccountingClassesEnabled: boolean;
9
+ jeSchedules: ExpenseAutomationJESchedulesViewSelector;
10
+ vendorSearchAutoCompleteActions: AutoCompleteActions;
11
+ vendorSearchAutoCompleteData: AutoCompleteData;
12
+ handleJeScheduleClick: (jeScheduleId: ID, jeScheduleKey: JEScheduleRowKey, jeScheduleType: ScheduleTypes) => void;
13
+ ignoreRecommendedJeSchedule: (jeScheduleTransactionKey: JEScheduleTransactionKey, scheduleType: ScheduleTypes, reason: JEAccrualFeedbackReason, note?: string) => void;
14
+ onJESchedulesFormDataChange: (scheduleJournalEntryId: ID, localData: JEScheduleResolveComponentFormData) => void;
15
+ onOneTimeAccrualClick: (accrualId: ID) => void;
16
+ onOneTimeAccrualFeedback: (accrualId: ID, action: "ignore" | "revert", reason: JEAccrualFeedbackReason, note?: string) => void;
17
+ onPostJESchedule: (scheduledJournalEntryId: ID, jeScheduleTransactionKey: JEScheduleTransactionKey) => void;
18
+ onToggleCreatedGroupCollapsed: () => void;
19
+ onTogglePendingGroupCollapsed: () => void;
20
+ onUpdateJESchedulesUIState: (uiState: Partial<ExpenseAutomationJESchedulesViewUIState>) => void;
21
+ onUpdateJEScheduleTypeFilter: (filter: ScheduleTypes | null) => void;
22
+ setCurrentFooterFormId: (formId: FooterFormIdType) => void;
23
+ onConfirmCategoryRecommendation?: (jeScheduleTransactionKey: JEScheduleTransactionKey, recommendedCategoryId: ID) => void;
24
+ onRevertJeSchedule?: (jeScheduleId: ID, jeScheduleTransactionKey: JEScheduleKey | JEScheduleTransactionKey, jeScheduleType: ScheduleTypes, reason: JEAccrualFeedbackReason, note?: string) => void;
25
+ }
26
+ declare function JESchedulesSection({ isAccountingClassesEnabled, jeSchedules, vendorSearchAutoCompleteData, handleJeScheduleClick, onOneTimeAccrualClick, onOneTimeAccrualFeedback, onConfirmCategoryRecommendation, onJESchedulesFormDataChange, onPostJESchedule, onRevertJeSchedule, ignoreRecommendedJeSchedule, onUpdateJESchedulesUIState, onTogglePendingGroupCollapsed, onToggleCreatedGroupCollapsed, onUpdateJEScheduleTypeFilter, vendorSearchAutoCompleteActions, setCurrentFooterFormId, }: Readonly<JESchedulesSectionProps>): import("react/jsx-runtime").JSX.Element;
27
+ export default JESchedulesSection;
@@ -0,0 +1,7 @@
1
+ import { JEKpiSummary, JEScheduleRow } from '@zeniai/client-epic-state';
2
+ export interface JESummarySectionProps {
3
+ kpiSummary: JEKpiSummary;
4
+ schedules: JEScheduleRow[];
5
+ }
6
+ declare function JESummarySection({ kpiSummary, schedules, }: Readonly<JESummarySectionProps>): import("react/jsx-runtime").JSX.Element;
7
+ export default JESummarySection;
@@ -0,0 +1,59 @@
1
+ import { FetchStateAndError, ID, NestedAccountHierarchyForReport, NestedClassHierarchyForReport, NewAccrualAccountsView, NewOneTimeAccrualLocalData, ScheduleDaysOfMonth, ScheduleDetailsLocalDataAccruedExpenses, ScheduleTransaction, ScheduleTransactionID, TransactionID, VendorBase, ZeniDate } from '@zeniai/client-epic-state';
2
+ import { AutoCompleteActions, AutoCompleteData } from '../../../../common/autoComplete/autoCompleteProps';
3
+ export interface NewScheduleSaveFormValues {
4
+ assetId?: string;
5
+ lastDayOfMonth?: boolean;
6
+ selectedAccount?: ID;
7
+ selectedAccumulatedDepreciationCategory?: ID;
8
+ selectedBaseTransactionId?: ScheduleTransactionID;
9
+ selectedClass?: ID;
10
+ selectedDate?: ZeniDate;
11
+ selectedDayOfMonth?: ScheduleDaysOfMonth;
12
+ selectedMonths?: number;
13
+ selectedVendor?: VendorBase;
14
+ }
15
+ export interface NewJEScheduleSectionProps {
16
+ accountListNestedAccountHierarchy: NestedAccountHierarchyForReport[];
17
+ baseTransactionSearchFetchState: FetchStateAndError;
18
+ baseTransactionSearchResults: ScheduleTransaction[];
19
+ classListNestedAccountHierarchy: NestedClassHierarchyForReport[];
20
+ isAccountingClassesEnabled: boolean;
21
+ newScheduleSaveStatus: FetchStateAndError;
22
+ vendorSearchAutoCompleteActions: AutoCompleteActions;
23
+ vendorSearchAutoCompleteData: AutoCompleteData;
24
+ allDepreciationAccountListNestedAccountHierarchy?: NestedAccountHierarchyForReport[];
25
+ initialScheduleDetailsMode?: string;
26
+ initialScheduleType?: string;
27
+ /**
28
+ * The base transaction named by `newScheduleLocalData.selectedBaseTransactionId`, resolved by the
29
+ * host: the search results it came from are long gone by the time the form is re-opened, and
30
+ * without it Save stays disabled on an otherwise complete form.
31
+ */
32
+ initialSelectedBaseTransaction?: ScheduleTransaction;
33
+ /** Cron-2's live gate for this company. Off hides the one-time accrual mode entirely. */
34
+ isAccrualEnabled?: boolean;
35
+ newAccrualAccountsView?: NewAccrualAccountsView;
36
+ /**
37
+ * The draft this form was last left with, for a host that stores it. Supplied in the same shape
38
+ * the form emits, so nothing has to be translated on the way back in.
39
+ */
40
+ newScheduleLocalData?: NewScheduleSaveFormValues;
41
+ onCancel: () => void;
42
+ onCreateAccruedSchedule: (localData: Partial<ScheduleDetailsLocalDataAccruedExpenses>) => void;
43
+ onCreateOneTimeAccrual: (formValues: NewOneTimeAccrualLocalData) => void;
44
+ /** Called once either accrual has actually saved, so the caller can leave the form. */
45
+ onCreationComplete: () => void;
46
+ onSaveSchedule: (scheduleType: string, formValues: NewScheduleSaveFormValues) => void;
47
+ /**
48
+ * `shouldResetEnteredData` is false on the first run: the form also mounts when it is being
49
+ * re-opened (returning from the base transaction), and clearing what the user typed then is data
50
+ * loss. Only a switch made inside the form asks for a reset.
51
+ */
52
+ onScheduleTypeChange: (scheduleType: string, scheduleDetailsMode: string, shouldResetEnteredData: boolean) => void;
53
+ onSearchBaseTransaction: (query: string) => void;
54
+ onViewTransaction: (transactionID: TransactionID) => void;
55
+ /** Fires on every field change, so a host can keep the draft. Prepaid and fixed assets only. */
56
+ onNewScheduleFormChange?: (scheduleType: string, formValues: NewScheduleSaveFormValues) => void;
57
+ }
58
+ declare function NewJEScheduleSection({ accountListNestedAccountHierarchy, baseTransactionSearchFetchState, baseTransactionSearchResults, classListNestedAccountHierarchy, isAccountingClassesEnabled, newScheduleSaveStatus, vendorSearchAutoCompleteActions, vendorSearchAutoCompleteData, allDepreciationAccountListNestedAccountHierarchy, newAccrualAccountsView, initialScheduleDetailsMode, initialScheduleType, onCancel, onCreateAccruedSchedule, onCreateOneTimeAccrual, onCreationComplete, onSaveSchedule, onScheduleTypeChange, onSearchBaseTransaction, onViewTransaction, newScheduleLocalData, initialSelectedBaseTransaction, isAccrualEnabled, onNewScheduleFormChange, }: Readonly<NewJEScheduleSectionProps>): import("react/jsx-runtime").JSX.Element;
59
+ export default NewJEScheduleSection;
@@ -0,0 +1,11 @@
1
+ export interface NewScheduleDocumentAutofillPanelProps {
2
+ scheduleType: string;
3
+ /**
4
+ * False for one-time accruals: they have no Base Transaction search to jump to, so the button
5
+ * would focus an input that is not on screen.
6
+ */
7
+ showSearchTransactionsButton?: boolean;
8
+ onSearchTransactionsClick: () => void;
9
+ }
10
+ declare function NewScheduleDocumentAutofillPanel({ scheduleType, showSearchTransactionsButton, onSearchTransactionsClick, }: Readonly<NewScheduleDocumentAutofillPanelProps>): import("react/jsx-runtime").JSX.Element;
11
+ export default NewScheduleDocumentAutofillPanel;
@@ -30,6 +30,8 @@ export interface FormattedTextFieldProps extends NumberFormatProps {
30
30
  type: FormattedTextFieldType;
31
31
  autoComplete?: "off" | "on" | "new-password";
32
32
  autoFocus?: boolean;
33
+ /** Overrides the input's default (non-error) background. Opt-in — omit to keep today's INPUT_BG_COLOR (grey5). */
34
+ backgroundColor?: string;
33
35
  defaultValue?: string | number;
34
36
  disableCopyPaste?: boolean;
35
37
  focus?: boolean;
@@ -51,5 +53,5 @@ export interface FormattedTextFieldProps extends NumberFormatProps {
51
53
  floatValue?: number;
52
54
  }) => void;
53
55
  }
54
- export declare function FormattedTextField({ type, name, placeholder, autoComplete, inputMode, prefix, suffix, format, maxLength, mask, isFieldError, isNumericString, allowNegative, allowLeadingZeros, allowEmptyFormatting, returnValueType, decimalSeparator, decimalScale, fixedDecimalScale, thousandSeparator, thousandsGroupStyle, isDisabled, defaultValue, style, inputStyle, registerOptions, protectedInfoText, autoFocus, focus, disableCopyPaste, isMasked, shouldHighlightZeroAmount, onClick, onInputBlur, onValueChange: onValueChangeProp, }: Readonly<FormattedTextFieldProps>): import("react/jsx-runtime").JSX.Element;
56
+ export declare function FormattedTextField({ type, name, placeholder, autoComplete, backgroundColor, inputMode, prefix, suffix, format, maxLength, mask, isFieldError, isNumericString, allowNegative, allowLeadingZeros, allowEmptyFormatting, returnValueType, decimalSeparator, decimalScale, fixedDecimalScale, thousandSeparator, thousandsGroupStyle, isDisabled, defaultValue, style, inputStyle, registerOptions, protectedInfoText, autoFocus, focus, disableCopyPaste, isMasked, shouldHighlightZeroAmount, onClick, onInputBlur, onValueChange: onValueChangeProp, }: Readonly<FormattedTextFieldProps>): import("react/jsx-runtime").JSX.Element;
55
57
  export {};
@@ -14,10 +14,22 @@ export interface MultiSelectFieldValue {
14
14
  export interface MultiSelectFieldProps {
15
15
  defaultValue: MultiSelectFieldValue;
16
16
  name: string;
17
+ /** Overrides the control's default (non-error) background. Opt-in — omit to keep today's grey5. */
18
+ backgroundColor?: string;
19
+ /** Overrides the control's hover background. Opt-in — omit to keep today's "inherit" (no change on hover). */
20
+ hoverBgColor?: string;
17
21
  isDisabled?: DisableMode;
22
+ /**
23
+ * Forces the error-state background + text/placeholder colors on
24
+ * independent of react-hook-form's own validation state — for a
25
+ * caller that needs to flag the field as errored for a reason RHF
26
+ * doesn't know about (e.g. a cross-field business-rule conflict).
27
+ * Mirrors `FormattedTextField`'s `isFieldError` prop.
28
+ */
29
+ isFieldError?: boolean;
18
30
  placeholder?: string;
19
31
  registerOptions?: RegisterOptions;
20
32
  style?: React.CSSProperties;
21
33
  getOptionLabel?: (value: string) => string;
22
34
  }
23
- export declare const MultiSelectField: ({ name, registerOptions, defaultValue, isDisabled, getOptionLabel, style, placeholder, }: MultiSelectFieldProps) => import("react/jsx-runtime").JSX.Element;
35
+ export declare const MultiSelectField: ({ name, registerOptions, defaultValue, isDisabled, isFieldError, getOptionLabel, style, placeholder, backgroundColor, hoverBgColor, }: MultiSelectFieldProps) => import("react/jsx-runtime").JSX.Element;