@zeniai/web-components 4.3.60-betaAK2 → 4.3.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{SessionTimeoutPopup-rD7JTrsx.js → SessionTimeoutPopup-BmGGI1m1.js} +84733 -84446
- package/dist/{SessionTimeoutPopup-D27PH8fA.cjs → SessionTimeoutPopup-DOvBM1F6.cjs} +14936 -14861
- package/dist/appLocale.d.ts +64 -18
- package/dist/cockpit.cjs.js +84 -84
- package/dist/cockpit.esm.js +223 -222
- package/dist/components/common/downloadReport/types/downloadReportOptions.d.ts +2 -0
- package/dist/components/common/downloadReport/types/downloadReportOptionsPayload.d.ts +2 -0
- package/dist/components/common/downloadReport/types/statementID.d.ts +2 -2
- package/dist/components/detail/dashboardReportPage/DashboardReportPage.d.ts +2 -1
- package/dist/components/detail/dashboardReportPage/DetailPageReportFilters.d.ts +2 -1
- package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualJournalEntryCard.d.ts +22 -0
- package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEOneTimeAccrualDetailPage.d.ts +2 -8
- package/dist/components/invoicing/catalog/InvoicingCatalogPage.d.ts +1 -2
- package/dist/components/invoicing/catalog/catalogActionMenuItems.d.ts +0 -4
- package/dist/components/invoicing/catalogDetail/InvoicingCatalogItemDetailPage.d.ts +6 -2
- package/dist/components/invoicing/common/composeInvoicingEmailPreview.d.ts +20 -0
- package/dist/components/invoicing/customerDetail/InvoicingCustomerDetailPage.d.ts +14 -11
- package/dist/components/invoicing/customerDetail/InvoicingPaymentLinkEmailComposerDialog.d.ts +26 -0
- package/dist/components/invoicing/customerList/InvoicingCustomerListPage.d.ts +1 -1
- package/dist/components/invoicing/discountDetail/InvoicingDiscountDetailPage.d.ts +6 -2
- package/dist/components/invoicing/discountList/InvoicingDiscountListPage.d.ts +1 -2
- package/dist/components/invoicing/discountList/discountActionMenuItems.d.ts +0 -4
- package/dist/components/invoicing/dunningDetail/InvoicingDunningEmailComposerDialog.d.ts +4 -0
- package/dist/components/invoicing/invoiceDetail/InvoicingInvoiceDetailPage.d.ts +6 -1
- package/dist/components/invoicing/paymentList/paymentActionMenuItems.d.ts +2 -6
- package/dist/components/invoicing/paymentList/paymentListRowMenu.d.ts +1 -1
- package/dist/components/invoicing/subscriptionDetail/InvoicingSubscriptionDetailPage.d.ts +6 -2
- package/dist/components/invoicing/subscriptionList/InvoicingSubscriptionListPage.d.ts +1 -4
- package/dist/components/invoicing/subscriptionList/subscriptionActionMenuItems.d.ts +0 -4
- package/dist/components/invoicing/subscriptionList/subscriptionListRowMenu.d.ts +1 -1
- package/dist/components/reportTree/reportTreeTypes.d.ts +5 -0
- package/dist/components/reportTree/treeNode/pAndLReports/row/SectionRow.d.ts +7 -1
- package/dist/components/reportTree/treeNode/pAndLReports/treeNodeMappers/mapSectionToTreeNode.d.ts +6 -3
- package/dist/components/reports/ReportsPage.d.ts +10 -2
- package/dist/components/reports/cashFlow/mapCashFlowClassReportToTreeNodes.d.ts +4 -0
- package/dist/components/reports/cashFlow/mapCashFlowGroupedReportToTreeNodes.d.ts +20 -0
- package/dist/components/reports/cashFlow/mapCashFlowProjectReportToTreeNodes.d.ts +4 -0
- package/dist/components/reports/reportTypes.d.ts +2 -2
- package/dist/components/spendManagement/zeniAccounts/expressPay/sections/RecipientDetailsSection.d.ts +1 -1
- package/dist/components/transactionDetail/items/transactionLineTable/listRow/TransactionLineTableListRow.d.ts +1 -1
- package/dist/components/transactionDetail/items/transactionLineTable/transactionLineTableTypes.d.ts +9 -0
- package/dist/context/featureProvider/DynamicConfigNameConstants.d.ts +2 -0
- package/dist/context/featureProvider/useMeetingLinks.d.ts +16 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.esm.js +285 -284
- package/dist/strings/strings.d.ts +64 -18
- package/package.json +19 -19
- package/dist/components/expenseAutomation/sections/jeSchedules/accrualDetail/JEAccrualSequenceSection.d.ts +0 -22
- package/dist/components/invoicing/catalogDetail/catalogProductActionMenuItems.test.d.ts +0 -1
- package/dist/components/invoicing/customerDetail/InvoicingPaymentLinkEmailPreview.d.ts +0 -15
- package/dist/components/invoicing/discountList/discountActionMenuItems.test.d.ts +0 -1
- package/dist/components/invoicing/invoiceDetail/invoicingVoidInvoiceHelpers.d.ts +0 -4
- package/dist/components/invoicing/invoiceDetail/invoicingVoidInvoiceHelpers.test.d.ts +0 -1
- /package/dist/{components/invoicing/catalog/catalogActionMenuItems.test.d.ts → context/featureProvider/useMeetingLinks.test.d.ts} +0 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FetchState, ID, JEOneTimeAccrual, NewAccrualAccountsView, OneTimeAccrualEdits, OneTimeAccrualIgnoreReasonType, OneTimeAccrualRevertReasonType, TransactionID } from '@zeniai/client-epic-state';
|
|
1
|
+
import { FetchState, ID, JEOneTimeAccrual, NewAccrualAccountsView, OneTimeAccrualEdits, OneTimeAccrualIgnoreReasonType, OneTimeAccrualRevertReasonType } from '@zeniai/client-epic-state';
|
|
3
2
|
/**
|
|
4
3
|
* The whole editable surface of a draft accrual. Amount lives here too -- it is edited in the
|
|
5
4
|
* header, but posts in the same body as the rest.
|
|
@@ -8,9 +7,6 @@ export interface JEOneTimeAccrualDetailPageProps {
|
|
|
8
7
|
accrual: JEOneTimeAccrual;
|
|
9
8
|
/** Status of the promote / ignore request for this accrual. */
|
|
10
9
|
actionFetchState: FetchState;
|
|
11
|
-
analytics: ClientAnalytics;
|
|
12
|
-
controllerEmails: string[];
|
|
13
|
-
controllerUserIds: string[];
|
|
14
10
|
isAccountingClassesEnabled: boolean;
|
|
15
11
|
/** Unposted edits from this visit. Seeds the form so a remount does not lose them. */
|
|
16
12
|
localData?: OneTimeAccrualEdits;
|
|
@@ -24,8 +20,6 @@ export interface JEOneTimeAccrualDetailPageProps {
|
|
|
24
20
|
onNavigateBack: () => void;
|
|
25
21
|
onRevert: (reason: OneTimeAccrualRevertReasonType, note?: string) => void;
|
|
26
22
|
onSkip: (reason: OneTimeAccrualIgnoreReasonType, note?: string) => void;
|
|
27
|
-
/** Opens the journal entry behind a posted accrual or its reversal. */
|
|
28
|
-
onViewTransaction: (transactionID: TransactionID) => void;
|
|
29
23
|
}
|
|
30
24
|
/**
|
|
31
25
|
* A single one-time accrual, with the two decisions a human makes about it: post it, or skip the
|
|
@@ -34,5 +28,5 @@ export interface JEOneTimeAccrualDetailPageProps {
|
|
|
34
28
|
* There is no GET-by-id on the accruals gateway, so the accrual arrives as a prop read from the
|
|
35
29
|
* list already in the store — this page never fetches.
|
|
36
30
|
*/
|
|
37
|
-
declare const JEOneTimeAccrualDetailPage: ({ accrual, actionFetchState,
|
|
31
|
+
declare const JEOneTimeAccrualDetailPage: ({ accrual, actionFetchState, isAccountingClassesEnabled, localData, newAccrualAccountsView, onAccrualFormChange, onAccrualFormClear, onApproveAndPost, onNavigateBack, onRevert, onSkip, }: Readonly<JEOneTimeAccrualDetailPageProps>) => import("react/jsx-runtime").JSX.Element;
|
|
38
32
|
export default JEOneTimeAccrualDetailPage;
|
|
@@ -32,8 +32,7 @@ export interface InvoicingCatalogPageProps {
|
|
|
32
32
|
onTabChange: (tab: InvoicingCatalogTab) => void;
|
|
33
33
|
onCatalogItemLifecycleAction?: (id: string, action: InvoicingCatalogItemLifecycleAction) => void;
|
|
34
34
|
onImportCsv?: () => void;
|
|
35
|
-
onRowAction?: (tab: InvoicingCatalogTab, id: string, action: "edit") => void;
|
|
36
35
|
onSortChange?: (next: SortState | null) => void;
|
|
37
36
|
}
|
|
38
|
-
export declare function InvoicingCatalogPage({ activeTab, counts, hasMore, isLoading, isLoadingMore, countsLoading, plans, productColumns, products, searchValue, sortState, onAddItem, onImportCsv, onItemClick, onLoadMore,
|
|
37
|
+
export declare function InvoicingCatalogPage({ activeTab, counts, hasMore, isLoading, isLoadingMore, countsLoading, plans, productColumns, products, searchValue, sortState, onAddItem, onImportCsv, onItemClick, onLoadMore, catalogItemLifecycleActionOptions, onCatalogItemLifecycleAction, runningCatalogItemActionId, onSearchChange, onSortChange, onTabChange, }: Readonly<InvoicingCatalogPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
39
38
|
export default InvoicingCatalogPage;
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingPlan } from '@zeniai/client-epic-state';
|
|
2
2
|
import { InvoicingActionMenuItem } from '../common/InvoicingActionMenu';
|
|
3
3
|
export interface CatalogActionMenuCallbacks {
|
|
4
|
-
onEdit?: () => void;
|
|
5
4
|
onLifecycleAction?: (action: InvoicingCatalogItemLifecycleAction) => void;
|
|
6
|
-
onViewDetails?: () => void;
|
|
7
5
|
}
|
|
8
6
|
export interface CatalogActionMenuOptions {
|
|
9
7
|
disabled?: boolean;
|
|
10
|
-
includeEdit?: boolean;
|
|
11
|
-
includeViewDetails?: boolean;
|
|
12
8
|
lifecycleActionOptions?: InvoicingCatalogLifecycleActionOption<InvoicingCatalogItemLifecycleAction>[];
|
|
13
9
|
}
|
|
14
10
|
/**
|
|
@@ -19,7 +19,6 @@ export interface InvoicingCatalogItemDetailPageProps {
|
|
|
19
19
|
applicableItemOptions?: InvoicingCatalogApplicableItemOption[];
|
|
20
20
|
catalogItemLifecycleActionOptions?: InvoicingCatalogLifecycleActionOption<InvoicingCatalogItemLifecycleAction>[];
|
|
21
21
|
catalogProductLifecycleActionOptions?: InvoicingCatalogLifecycleActionOption<InvoicingCatalogProductLifecycleAction>[];
|
|
22
|
-
editErrorMessage?: string;
|
|
23
22
|
fieldHelp?: FieldHelpByCode;
|
|
24
23
|
isRunningLifecycleAction?: boolean;
|
|
25
24
|
isSaving?: boolean;
|
|
@@ -31,5 +30,10 @@ export interface InvoicingCatalogItemDetailPageProps {
|
|
|
31
30
|
onSaveEdit?: () => void;
|
|
32
31
|
onSubFamilyLifecycleAction?: (subFamilyId: string, action: InvoicingCatalogProductLifecycleAction) => void;
|
|
33
32
|
}
|
|
34
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Holds the skeleton until every request the page renders from has settled, so
|
|
35
|
+
* the form below mounts once with real values instead of re-seeding itself as
|
|
36
|
+
* each response lands.
|
|
37
|
+
*/
|
|
38
|
+
export declare function InvoicingCatalogItemDetailPage(props: Readonly<InvoicingCatalogItemDetailPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
35
39
|
export default InvoicingCatalogItemDetailPage;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** The subject and body a composer is editing. */
|
|
2
|
+
export interface InvoicingEmailDraft {
|
|
3
|
+
body: string;
|
|
4
|
+
subject: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* An email the backend rendered once, with sentinel tokens standing in for the
|
|
8
|
+
* subject and body so a draft can be spliced in without another request.
|
|
9
|
+
*/
|
|
10
|
+
export interface InvoicingEmailPreviewTemplate {
|
|
11
|
+
bodyToken: string;
|
|
12
|
+
renderedHtmlTemplate: string;
|
|
13
|
+
subjectToken: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Splices a draft into the rendered template, HTML-escaping both fields and
|
|
17
|
+
* turning body newlines into `<br>`. Returns undefined when there is nothing to
|
|
18
|
+
* render into, so callers can show their own empty or error state.
|
|
19
|
+
*/
|
|
20
|
+
export declare function composeInvoicingEmailPreview(preview: InvoicingEmailPreviewTemplate | undefined, draft: InvoicingEmailDraft): string | undefined;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InvoicingCustomer, InvoicingCustomerFormLocalData, InvoicingCustomerPaymentMethod, InvoicingInvoice, InvoicingNamedOption } from '@zeniai/client-epic-state';
|
|
2
2
|
import { FieldHelpByCode } from '../../formElements/fieldHelp/FieldHelpContext';
|
|
3
|
+
import { InvoicingPaymentLinkEmailPreview } from './InvoicingPaymentLinkEmailComposerDialog';
|
|
3
4
|
export interface InvoicingCustomerDetailPageProps {
|
|
4
5
|
customerId: string;
|
|
5
6
|
/** `/1.0/config` option lists backing the customer form's pickers. */
|
|
@@ -9,28 +10,23 @@ export interface InvoicingCustomerDetailPageProps {
|
|
|
9
10
|
taxabilityOptions: InvoicingNamedOption[];
|
|
10
11
|
/** Formatted billing address for display (from the shared Address flow). */
|
|
11
12
|
billingAddressLabel?: string;
|
|
12
|
-
/** Branding accent color for the payment-link email preview. */
|
|
13
|
-
brandingAccentColor?: string;
|
|
14
|
-
/** Tenant company name shown as the sender in the payment-link email preview. */
|
|
15
|
-
brandingCompanyName?: string;
|
|
16
|
-
/** Branding contact email shown in the payment-link email preview footer. */
|
|
17
|
-
brandingEmail?: string;
|
|
18
|
-
/** Branding logo URL for the payment-link email preview header. */
|
|
19
|
-
brandingLogoUrl?: string;
|
|
20
13
|
customer?: InvoicingCustomer;
|
|
21
14
|
/** Error from the last inline-edit save attempt, shown in edit mode. */
|
|
22
|
-
editErrorMessage?: string;
|
|
23
15
|
fieldHelp?: FieldHelpByCode;
|
|
16
|
+
hasPaymentLinkEmailPreviewFailed?: boolean;
|
|
24
17
|
/** Open the payment-link email preview modal on mount (Storybook). */
|
|
25
18
|
initialPreviewEmailOpen?: boolean;
|
|
26
19
|
/** Recent invoices for this customer (Figma: "Recent Invoices" table). */
|
|
27
20
|
invoices?: InvoicingInvoice[];
|
|
21
|
+
isPaymentLinkEmailPreviewLoading?: boolean;
|
|
28
22
|
/** True while an inline-edit save is in flight. */
|
|
29
23
|
isSaving?: boolean;
|
|
30
24
|
/** True while a magic-link payment-collection email is being sent. */
|
|
31
25
|
isSendingPaymentLink?: boolean;
|
|
32
26
|
/** CES draft for the inline edit — seeds the form and persists across nav. */
|
|
33
27
|
localData?: InvoicingCustomerFormLocalData;
|
|
28
|
+
/** The tokenized email render the composer previews. */
|
|
29
|
+
paymentLinkEmailPreview?: InvoicingPaymentLinkEmailPreview;
|
|
34
30
|
/**
|
|
35
31
|
* Saved payment methods, newest first with exactly one marked default.
|
|
36
32
|
* Normalized by the customer detail view selector.
|
|
@@ -51,6 +47,8 @@ export interface InvoicingCustomerDetailPageProps {
|
|
|
51
47
|
onChange?: (localData: InvoicingCustomerFormLocalData) => void;
|
|
52
48
|
onCreateInvoice?: () => void;
|
|
53
49
|
onCreatePromotionalCredits?: () => void;
|
|
50
|
+
/** Asked for when the composer opens, and again behind its Retry. */
|
|
51
|
+
onFetchPaymentLinkEmailPreview?: (cacheOverride?: boolean) => void;
|
|
54
52
|
onInvoiceClick?: (invoiceId: string) => void;
|
|
55
53
|
onNewSubscription?: () => void;
|
|
56
54
|
/** Open the shared Address screen to add/edit the billing address. */
|
|
@@ -60,8 +58,13 @@ export interface InvoicingCustomerDetailPageProps {
|
|
|
60
58
|
/** Persist inline-edit changes; receives the customer draft `localData`. */
|
|
61
59
|
onSaveEdit?: (localData: InvoicingCustomerFormLocalData) => void;
|
|
62
60
|
/** Email the customer a magic link to add their payment details. */
|
|
63
|
-
onSendPaymentLink?: (email: string) => void;
|
|
61
|
+
onSendPaymentLink?: (email: string, subject?: string, body?: string) => void;
|
|
64
62
|
onSubscriptionClick?: (subscriptionId: string) => void;
|
|
65
63
|
}
|
|
66
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Holds the skeleton until every request the page renders from has settled, so
|
|
66
|
+
* the form below mounts once with real values instead of re-seeding itself as
|
|
67
|
+
* each response lands.
|
|
68
|
+
*/
|
|
69
|
+
export declare function InvoicingCustomerDetailPage(props: Readonly<InvoicingCustomerDetailPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
67
70
|
export default InvoicingCustomerDetailPage;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { InvoicingEmailPreviewTemplate } from '../common/composeInvoicingEmailPreview';
|
|
2
|
+
/** The backend's default prefills, alongside the tokenized render. */
|
|
3
|
+
export interface InvoicingPaymentLinkEmailPreview extends InvoicingEmailPreviewTemplate {
|
|
4
|
+
body: string;
|
|
5
|
+
subject: string;
|
|
6
|
+
to: string;
|
|
7
|
+
}
|
|
8
|
+
export interface InvoicingPaymentLinkEmailComposerDialogProps {
|
|
9
|
+
open: boolean;
|
|
10
|
+
hasPreviewFailed?: boolean;
|
|
11
|
+
isPreviewLoading?: boolean;
|
|
12
|
+
isSending?: boolean;
|
|
13
|
+
preview?: InvoicingPaymentLinkEmailPreview;
|
|
14
|
+
onClose: () => void;
|
|
15
|
+
/** Called with the edited subject and body, both already validated. */
|
|
16
|
+
onSend: (subject: string, body: string) => void;
|
|
17
|
+
/** Re-requests the preview after a failure. */
|
|
18
|
+
onRetryPreview?: () => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Composes the payment-method-request email: the backend renders it once with
|
|
22
|
+
* sentinel tokens where the subject and body go, and the draft is spliced into
|
|
23
|
+
* those tokens as the user types — so the live preview costs no requests.
|
|
24
|
+
*/
|
|
25
|
+
export declare function InvoicingPaymentLinkEmailComposerDialog({ open, hasPreviewFailed, isPreviewLoading, isSending, preview, onClose, onRetryPreview, onSend, }: Readonly<InvoicingPaymentLinkEmailComposerDialogProps>): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export default InvoicingPaymentLinkEmailComposerDialog;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address, InvoicingCustomer, InvoicingCustomerColumnConfig, InvoicingCustomerTabId, InvoicingListCounts } from '@zeniai/client-epic-state';
|
|
2
2
|
import { SortState } from '../../dataListTable/types';
|
|
3
3
|
/** Row overflow-menu actions, mirroring the customer detail page. */
|
|
4
|
-
export type InvoicingCustomerRowAction = "createInvoice" | "
|
|
4
|
+
export type InvoicingCustomerRowAction = "createInvoice" | "createPromotionalCredits" | "newSubscription";
|
|
5
5
|
/** Presentational Customers list for the in-app Invoicing module. */
|
|
6
6
|
export interface InvoicingCustomerListPageProps {
|
|
7
7
|
activeStatus: string;
|
|
@@ -6,7 +6,6 @@ export interface InvoicingDiscountDetailPageProps {
|
|
|
6
6
|
coupon?: InvoicingCoupon;
|
|
7
7
|
discountLifecycleActionOptions?: InvoicingDiscountLifecycleActionOption[];
|
|
8
8
|
/** Error from the last inline-edit save attempt, shown in edit mode. */
|
|
9
|
-
editErrorMessage?: string;
|
|
10
9
|
fieldHelp?: FieldHelpByCode;
|
|
11
10
|
isRunningLifecycleAction?: boolean;
|
|
12
11
|
/** True while an inline-edit save is in flight. */
|
|
@@ -16,5 +15,10 @@ export interface InvoicingDiscountDetailPageProps {
|
|
|
16
15
|
/** Persist inline-edit changes; receives the API-ready coupon payload. */
|
|
17
16
|
onSaveEdit?: (data: Record<string, unknown>) => void;
|
|
18
17
|
}
|
|
19
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Holds the skeleton until every request the page renders from has settled, so
|
|
20
|
+
* the form below mounts once with real values instead of re-seeding itself as
|
|
21
|
+
* each response lands.
|
|
22
|
+
*/
|
|
23
|
+
export declare function InvoicingDiscountDetailPage(props: Readonly<InvoicingDiscountDetailPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
20
24
|
export default InvoicingDiscountDetailPage;
|
|
@@ -28,8 +28,7 @@ export interface InvoicingDiscountListPageProps {
|
|
|
28
28
|
onCreateCoupon?: () => void;
|
|
29
29
|
onDiscountLifecycleAction?: (id: string, action: InvoicingDiscountLifecycleAction) => void;
|
|
30
30
|
onImportCsv?: () => void;
|
|
31
|
-
onRowAction?: (couponId: string, action: "edit") => void;
|
|
32
31
|
onSortChange?: (next: SortState | null) => void;
|
|
33
32
|
}
|
|
34
|
-
export declare function InvoicingDiscountListPage({ activeStatus, columns, counts, coupons, hasMore, isLoading, isLoadingMore, countsLoading, searchValue, sortState, tabIds, onCouponClick, onCreateCoupon, onImportCsv, onLoadMore,
|
|
33
|
+
export declare function InvoicingDiscountListPage({ activeStatus, columns, counts, coupons, hasMore, isLoading, isLoadingMore, countsLoading, searchValue, sortState, tabIds, onCouponClick, onCreateCoupon, onImportCsv, onLoadMore, discountLifecycleActionOptions, onDiscountLifecycleAction, runningDiscountActionId, onSearchChange, onSortChange, onStatusChange, }: Readonly<InvoicingDiscountListPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
35
34
|
export default InvoicingDiscountListPage;
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { InvoicingCoupon, InvoicingDiscountLifecycleAction, InvoicingDiscountLifecycleActionOption } from '@zeniai/client-epic-state';
|
|
2
2
|
import { InvoicingActionMenuItem } from '../common/InvoicingActionMenu';
|
|
3
3
|
export interface DiscountActionMenuCallbacks {
|
|
4
|
-
onEdit?: () => void;
|
|
5
4
|
onLifecycleAction?: (action: InvoicingDiscountLifecycleAction) => void;
|
|
6
|
-
onViewDetails?: () => void;
|
|
7
5
|
}
|
|
8
6
|
export interface DiscountActionMenuOptions {
|
|
9
7
|
disabled?: boolean;
|
|
10
|
-
includeEdit?: boolean;
|
|
11
|
-
includeViewDetails?: boolean;
|
|
12
8
|
lifecycleActionOptions?: InvoicingDiscountLifecycleActionOption[];
|
|
13
9
|
}
|
|
14
10
|
/**
|
|
@@ -21,5 +21,9 @@ export interface InvoicingDunningEmailComposerDialogProps {
|
|
|
21
21
|
onSend: (draft: InvoicingDunningEmailDraft) => void;
|
|
22
22
|
}
|
|
23
23
|
export declare function InvoicingDunningEmailComposerDialog({ initialDraft, isPreviewLoading, isSending, onClose, onSend, open, preview, previewErrorMessage, sendErrorMessage, }: Readonly<InvoicingDunningEmailComposerDialogProps>): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
/**
|
|
25
|
+
* Kept as the dunning-facing name; the splice itself is shared with the
|
|
26
|
+
* payment-link composer.
|
|
27
|
+
*/
|
|
24
28
|
export declare function composeInvoicingDunningEmailPreview(preview: InvoicingDunningEmailPreviewTemplate | undefined, draft: InvoicingDunningEmailDraft): string | undefined;
|
|
25
29
|
export default InvoicingDunningEmailComposerDialog;
|
|
@@ -27,5 +27,10 @@ export interface InvoicingInvoiceDetailPageProps {
|
|
|
27
27
|
onSubscriptionClick?: (subscriptionId: string) => void;
|
|
28
28
|
onVoid?: (body: VoidInvoiceBody) => void;
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Holds the skeleton until every request the page renders from has settled, so
|
|
32
|
+
* the form below mounts once with real values instead of re-seeding itself as
|
|
33
|
+
* each response lands.
|
|
34
|
+
*/
|
|
35
|
+
export declare function InvoicingInvoiceDetailPage(props: Readonly<InvoicingInvoiceDetailPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
31
36
|
export default InvoicingInvoiceDetailPage;
|
|
@@ -3,22 +3,18 @@ import { InvoicingActionMenuItem } from '../common/InvoicingActionMenu';
|
|
|
3
3
|
export interface TransactionActionMenuCallbacks {
|
|
4
4
|
onCapture?: () => void;
|
|
5
5
|
onViewCustomer?: () => void;
|
|
6
|
-
onViewDetails?: () => void;
|
|
7
6
|
onViewInvoice?: () => void;
|
|
8
7
|
onViewSubscription?: () => void;
|
|
9
8
|
}
|
|
10
9
|
export interface TransactionActionMenuOptions {
|
|
11
10
|
disabled?: boolean;
|
|
12
|
-
includeViewDetails?: boolean;
|
|
13
11
|
}
|
|
14
12
|
/**
|
|
15
13
|
* Single source of truth for the transaction (payment) action menu, shared by
|
|
16
14
|
* the detail page kebab and each payments-list row ⋮ menu so they never drift.
|
|
17
15
|
* The detail page's full action set drives it — capture, View Invoice, View
|
|
18
16
|
* Subscription, View Customer — each gated on the related entity existing and on
|
|
19
|
-
* its callback being wired. The list wires only View Invoice / View Customer
|
|
20
|
-
*
|
|
21
|
-
* the transaction detail (the list divider before View Customer is suppressed so
|
|
22
|
-
* only the detail keeps its capture-vs-navigation separator).
|
|
17
|
+
* its callback being wired. The list wires only View Invoice / View Customer;
|
|
18
|
+
* rows open the detail by click, so the menu carries no View Details entry.
|
|
23
19
|
*/
|
|
24
20
|
export declare function buildTransactionActionMenuItems(transaction: InvoicingTransaction, callbacks: TransactionActionMenuCallbacks, options?: TransactionActionMenuOptions): InvoicingActionMenuItem[];
|
|
@@ -8,5 +8,5 @@ export interface PaymentListRowMenuProps extends TransactionActionMenuCallbacks
|
|
|
8
8
|
* Per-row ⋮ menu for the payments list. Stops event propagation so row
|
|
9
9
|
* navigation does not fire when opening the menu.
|
|
10
10
|
*/
|
|
11
|
-
export declare function PaymentListRowMenu({ disabled, transaction, onCapture, onViewCustomer,
|
|
11
|
+
export declare function PaymentListRowMenu({ disabled, transaction, onCapture, onViewCustomer, onViewInvoice, onViewSubscription, }: Readonly<PaymentListRowMenuProps>): import("react/jsx-runtime").JSX.Element;
|
|
12
12
|
export default PaymentListRowMenu;
|
|
@@ -18,7 +18,6 @@ export interface InvoicingSubscriptionDetailPageProps {
|
|
|
18
18
|
/** Coupon options for commercial inline edit. */
|
|
19
19
|
coupons?: InvoicingSubscriptionFormOption[];
|
|
20
20
|
/** Error from the last inline-edit save attempt, shown in edit mode. */
|
|
21
|
-
editErrorMessage?: string;
|
|
22
21
|
fieldHelp?: FieldHelpByCode;
|
|
23
22
|
isRunningAction?: boolean;
|
|
24
23
|
/** True while an inline-edit save is in flight. */
|
|
@@ -47,5 +46,10 @@ export interface InvoicingSubscriptionDetailPageProps {
|
|
|
47
46
|
onSaveEdit?: (localData: InvoicingSubscriptionFormLocalData) => void;
|
|
48
47
|
onViewInvoices?: () => void;
|
|
49
48
|
}
|
|
50
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Holds the skeleton until every request the page renders from has settled, so
|
|
51
|
+
* the form below mounts once with real values instead of re-seeding itself as
|
|
52
|
+
* each response lands.
|
|
53
|
+
*/
|
|
54
|
+
export declare function InvoicingSubscriptionDetailPage(props: Readonly<InvoicingSubscriptionDetailPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
51
55
|
export default InvoicingSubscriptionDetailPage;
|
|
@@ -20,10 +20,8 @@ export interface InvoicingSubscriptionListPageProps {
|
|
|
20
20
|
tabIds: InvoicingSubscriptionTabId[];
|
|
21
21
|
/** Cancel reasons from `/1.0/config`, handed to the cancel dialog. */
|
|
22
22
|
cancelReasonCodeOptions?: InvoicingNamedOption[];
|
|
23
|
-
commercialEditAllowedFromStatuses?: string[];
|
|
24
23
|
countsLoading?: boolean;
|
|
25
24
|
lifecycleActionOptions?: InvoicingSubscriptionLifecycleActionOption[];
|
|
26
|
-
metadataEditAllowedFromStatuses?: string[];
|
|
27
25
|
runningActionSubscriptionId?: string | null;
|
|
28
26
|
sortState?: SortState | null;
|
|
29
27
|
onLoadMore: () => void;
|
|
@@ -34,12 +32,11 @@ export interface InvoicingSubscriptionListPageProps {
|
|
|
34
32
|
/** Cancel is its own callback: the dialog collects a reason and a comment. */
|
|
35
33
|
onCancelSubscription?: (subscriptionId: string, values: InvoicingCancelSubscriptionValues) => void;
|
|
36
34
|
onChangeTermEnd?: (subscriptionId: string, termEndsAt: string) => void;
|
|
37
|
-
onEditSubscription?: (subscriptionId: string) => void;
|
|
38
35
|
onImportCsv?: () => void;
|
|
39
36
|
onSortChange?: (next: SortState | null) => void;
|
|
40
37
|
/** `resumeDate` is only supplied for `pause`, collected by the pause dialog. */
|
|
41
38
|
onSubscriptionAction?: (subscriptionId: string, action: SubscriptionListRowAction, resumeDate?: string) => void;
|
|
42
39
|
onViewSubscriptionInvoices?: (subscriptionId: string) => void;
|
|
43
40
|
}
|
|
44
|
-
export declare function InvoicingSubscriptionListPage({ activeStatus, columns,
|
|
41
|
+
export declare function InvoicingSubscriptionListPage({ activeStatus, columns, counts, countsLoading, hasMore, isLoading, isLoadingMore, searchValue, sortState, subscriptions, tabIds, onAddSubscription, onChangeTermEnd, onImportCsv, onLoadMore, onSearchChange, onSortChange, onStatusChange, cancelReasonCodeOptions, onCancelSubscription, onSubscriptionAction, onSubscriptionClick, onViewSubscriptionInvoices, lifecycleActionOptions, runningActionSubscriptionId, }: Readonly<InvoicingSubscriptionListPageProps>): import("react/jsx-runtime").JSX.Element;
|
|
45
42
|
export default InvoicingSubscriptionListPage;
|
|
@@ -3,15 +3,11 @@ import { InvoicingActionMenuItem } from '../common/InvoicingActionMenu';
|
|
|
3
3
|
export type SubscriptionListRowAction = InvoicingSubscriptionLifecycleAction;
|
|
4
4
|
export interface SubscriptionActionMenuCallbacks {
|
|
5
5
|
onChangeTermEnd?: () => void;
|
|
6
|
-
onEdit?: () => void;
|
|
7
6
|
onLifecycleAction?: (action: InvoicingSubscriptionLifecycleAction) => void;
|
|
8
|
-
onViewDetails?: () => void;
|
|
9
7
|
onViewInvoices?: () => void;
|
|
10
8
|
}
|
|
11
9
|
export interface SubscriptionActionMenuOptions {
|
|
12
10
|
disabled?: boolean;
|
|
13
|
-
includeEdit?: boolean;
|
|
14
|
-
includeViewDetails?: boolean;
|
|
15
11
|
lifecycleActionOptions?: InvoicingSubscriptionLifecycleActionOption[];
|
|
16
12
|
}
|
|
17
13
|
/**
|
|
@@ -9,5 +9,5 @@ export interface SubscriptionListRowMenuProps extends SubscriptionActionMenuCall
|
|
|
9
9
|
* Per-row ⋮ menu for the subscriptions list. Stops event propagation so row
|
|
10
10
|
* navigation does not fire when opening the menu.
|
|
11
11
|
*/
|
|
12
|
-
export declare function SubscriptionListRowMenu({ disabled, lifecycleActionOptions, subscription, onChangeTermEnd,
|
|
12
|
+
export declare function SubscriptionListRowMenu({ disabled, lifecycleActionOptions, subscription, onChangeTermEnd, onLifecycleAction, onViewInvoices, }: Readonly<SubscriptionListRowMenuProps>): import("react/jsx-runtime").JSX.Element;
|
|
13
13
|
export default SubscriptionListRowMenu;
|
|
@@ -54,6 +54,11 @@ interface ReportElement {
|
|
|
54
54
|
numOfBalances: number;
|
|
55
55
|
title: string;
|
|
56
56
|
data?: Section | SectionWithAccountOnly | CalculatedSection | AccountGroupReport | AccountReport | HorizontalAccountReportData | SectionClassesViewReportV2 | SectionAccountsViewReport | NestedAccountReport | AccountGroupReportV2 | NestedClassReportV2 | ProjectReportWithBalances | SectionProjectViewReport | COABalance[] | ClassColumnDefinition[] | NestedClassHierarchyForReport | AgingPeriod[] | AgingBalance[] | AgingBalancesByVendor | NestedAgingBalancesByCustomer | OpExBalancesByVendor | FluxSectionViewReport | FluxAnalysisVendorView | FluxVendorAccountsAndClassesView | FluxTotalRowReport | AccountReconciliationBySection | AccountReconciliationByAccount;
|
|
57
|
+
/**
|
|
58
|
+
* Renders the row's label and children but no balance cells. Used where a
|
|
59
|
+
* section is only a grouping label and its figures live on a row below.
|
|
60
|
+
*/
|
|
61
|
+
hideBalances?: boolean;
|
|
57
62
|
index?: number;
|
|
58
63
|
metadata?: ElementMetadata;
|
|
59
64
|
sectionType?: SectionType;
|
|
@@ -17,7 +17,13 @@ export interface Props {
|
|
|
17
17
|
treeNodeId: string;
|
|
18
18
|
type: ReportTreeKind;
|
|
19
19
|
backgroundColor?: Color;
|
|
20
|
+
/**
|
|
21
|
+
* Renders the cells empty instead of dropping them, so a label-only row keeps
|
|
22
|
+
* the row's width and bottom border. Mirrors isTitleRow in the PDF and Excel
|
|
23
|
+
* section rows.
|
|
24
|
+
*/
|
|
25
|
+
hideBalances?: boolean;
|
|
20
26
|
hideSectionIconCircle?: boolean;
|
|
21
27
|
onClick?: (treeNodeId: string) => void;
|
|
22
28
|
}
|
|
23
|
-
export default function SectionRow({ type, backgroundColor, isSticky, treeNodeId, height, sectionId, sectionName, sectionBalances, isActualVsForecastOn, compareMode, isScrolling: _isScrolling, isOpen, isLeaf, onClick, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
export default function SectionRow({ type, backgroundColor, isSticky, treeNodeId, height, sectionId, sectionName, sectionBalances, hideBalances, isActualVsForecastOn, compareMode, isScrolling: _isScrolling, isOpen, isLeaf, onClick, }: Props): import("react/jsx-runtime").JSX.Element;
|
package/dist/components/reportTree/treeNode/pAndLReports/treeNodeMappers/mapSectionToTreeNode.d.ts
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import { Section, SectionAccountsViewReport, SectionClassesViewReportV2, SectionProjectViewReport } from '@zeniai/client-epic-state';
|
|
2
2
|
import { default as SectionType } from '../../../../dataSelector/dataSelector';
|
|
3
3
|
import { ReportElementConfig, ReportTreeNode } from '../../../reportTreeTypes';
|
|
4
|
-
export declare function mapSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, }: {
|
|
4
|
+
export declare function mapSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, hideBalances, }: {
|
|
5
5
|
config: ReportElementConfig;
|
|
6
6
|
isLastNode: boolean;
|
|
7
7
|
numOfBalances: number;
|
|
8
8
|
section: Section;
|
|
9
9
|
sectionType: SectionType;
|
|
10
10
|
title: string;
|
|
11
|
+
hideBalances?: boolean;
|
|
11
12
|
}): ReportTreeNode;
|
|
12
|
-
export declare function mapClassViewSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, }: {
|
|
13
|
+
export declare function mapClassViewSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, hideBalances, }: {
|
|
13
14
|
config: ReportElementConfig;
|
|
14
15
|
isLastNode: boolean;
|
|
15
16
|
numOfBalances: number;
|
|
16
17
|
section: SectionClassesViewReportV2;
|
|
17
18
|
sectionType: SectionType;
|
|
18
19
|
title: string;
|
|
20
|
+
hideBalances?: boolean;
|
|
19
21
|
}): ReportTreeNode;
|
|
20
22
|
export declare function mapAccountViewSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, }: {
|
|
21
23
|
config: ReportElementConfig;
|
|
@@ -25,11 +27,12 @@ export declare function mapAccountViewSectionToTreeNode({ section, sectionType,
|
|
|
25
27
|
sectionType: SectionType;
|
|
26
28
|
title: string;
|
|
27
29
|
}): ReportTreeNode;
|
|
28
|
-
export declare function mapProjectViewSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, }: {
|
|
30
|
+
export declare function mapProjectViewSectionToTreeNode({ section, sectionType, numOfBalances, title, isLastNode, config, hideBalances, }: {
|
|
29
31
|
config: ReportElementConfig;
|
|
30
32
|
isLastNode: boolean;
|
|
31
33
|
numOfBalances: number;
|
|
32
34
|
section: SectionProjectViewReport;
|
|
33
35
|
sectionType: SectionType;
|
|
34
36
|
title: string;
|
|
37
|
+
hideBalances?: boolean;
|
|
35
38
|
}): ReportTreeNode;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ClientAnalytics } from '@zeniai/client-analytics';
|
|
2
|
-
import { AccountReport, AccountViewMode, BalanceSheetClassesViewReport, BalanceSheetProjectViewReport, BalanceSheetReport, COABalance, COABalanceTimeFrame, COABalanceType, COABalancesOrder, COABalancesRange, COABalancesRangeWithThisPeriod, CashFlowReport, ClassViewLayout, FetchState, FetchStateAndError, ID, NestedClassID, ProfitAndLossByClassHorizontalReport, ProfitAndLossClassesViewReport, ProfitAndLossProjectViewReport, ProfitAndLossReport, ReportFormat, ReportID, TimeframeTick, TimeframeTickWithMetaData } from '@zeniai/client-epic-state';
|
|
2
|
+
import { AccountReport, AccountViewMode, BalanceSheetClassesViewReport, BalanceSheetProjectViewReport, BalanceSheetReport, COABalance, COABalanceTimeFrame, COABalanceType, COABalancesOrder, COABalancesRange, COABalancesRangeWithThisPeriod, CashFlowClassesViewReport, CashFlowProjectViewReport, CashFlowReport, ClassViewLayout, FetchState, FetchStateAndError, ID, NestedClassID, ProfitAndLossByClassHorizontalReport, ProfitAndLossClassesViewReport, ProfitAndLossProjectViewReport, ProfitAndLossReport, ReportFormat, ReportID, TimeframeTick, TimeframeTickWithMetaData } from '@zeniai/client-epic-state';
|
|
3
3
|
import { RequestToOpenThreadType } from '../commentsAndNotes/utils/ThreadsProvider';
|
|
4
4
|
import { DownloadbleReportProps } from '../common/downloadReport/downloadableReportProps';
|
|
5
5
|
import { ReportTreeScrollPosition } from '../reportTree/ReportTree';
|
|
@@ -10,6 +10,8 @@ export interface Props extends DownloadbleReportProps {
|
|
|
10
10
|
balanceSheetProjectViewReport: BalanceSheetProjectViewReport;
|
|
11
11
|
balanceSheetReport: BalanceSheetReport;
|
|
12
12
|
balancesInTimeframe: COABalance[];
|
|
13
|
+
cashFlowClassesViewReport: CashFlowClassesViewReport;
|
|
14
|
+
cashFlowProjectViewReport: CashFlowProjectViewReport;
|
|
13
15
|
cashFlowReport: CashFlowReport;
|
|
14
16
|
displayOrder: COABalancesOrder;
|
|
15
17
|
fetchState: FetchState;
|
|
@@ -63,7 +65,13 @@ export interface Props extends DownloadbleReportProps {
|
|
|
63
65
|
onTableScroll?: (reportId: ReportID, props: ReportTreeScrollPosition) => void;
|
|
64
66
|
onThisPeriodChanged?: (thisPeriod: TimeframeTick, maxNumOfPeriodsToSelect: number, reportViewUpdate?: boolean) => void;
|
|
65
67
|
onTimeframeSelectionChanged?: (selectedTimeframe: COABalanceTimeFrame, isUpdateAdditionalBalances: boolean, reportViewUpdate?: boolean) => void;
|
|
66
|
-
onUpdateAccountViewMode?: (view: AccountViewMode
|
|
68
|
+
onUpdateAccountViewMode?: (view: AccountViewMode,
|
|
69
|
+
/**
|
|
70
|
+
* The report the mode belongs to. Thread navigation changes the report and
|
|
71
|
+
* the mode in one go, and the handler's own props still hold the previous
|
|
72
|
+
* report at that point, so the family has to travel with the mode.
|
|
73
|
+
*/
|
|
74
|
+
forReportId?: ReportID) => void;
|
|
67
75
|
onUpdateClassesToFilterOut?: (classesToFilterOut: NestedClassID[]) => void;
|
|
68
76
|
onUpdateClassViewLayout?: (layout: ClassViewLayout) => void;
|
|
69
77
|
onUpdateProjectsToFilterOut?: (projectsToFilterOut: ID[]) => void;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CashFlowClassesViewReport } from '@zeniai/client-epic-state';
|
|
2
|
+
import { RootNodes } from '../../reportTree/ReportTree';
|
|
3
|
+
import { ReportElementConfig } from '../../reportTree/reportTreeTypes';
|
|
4
|
+
export declare function mapCashFlowClassReportToReportTreeNodes(report: CashFlowClassesViewReport, config: ReportElementConfig, makeTimeframeRowSticky?: boolean, isPageFetchInProgress?: boolean): RootNodes;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CashFlowClassesViewReport, CashFlowProjectViewReport, CashFlowReportViewSectionID } from '@zeniai/client-epic-state';
|
|
2
|
+
import { default as SectionType } from '../../dataSelector/dataSelector';
|
|
3
|
+
import { RootNodes } from '../../reportTree/ReportTree';
|
|
4
|
+
import { ReportElementConfig, ReportTreeNode } from '../../reportTree/reportTreeTypes';
|
|
5
|
+
export declare function mapCashFlowGroupedReportToReportTreeNodes<TSection>({ report, sections, config, isPageFetchInProgress, makeTimeframeRowSticky, mapSectionToTreeNode, }: {
|
|
6
|
+
config: ReportElementConfig;
|
|
7
|
+
isPageFetchInProgress: boolean;
|
|
8
|
+
makeTimeframeRowSticky: boolean;
|
|
9
|
+
report: CashFlowClassesViewReport | CashFlowProjectViewReport;
|
|
10
|
+
sections: Record<CashFlowReportViewSectionID, TSection>;
|
|
11
|
+
mapSectionToTreeNode: (args: {
|
|
12
|
+
config: ReportElementConfig;
|
|
13
|
+
isLastNode: boolean;
|
|
14
|
+
numOfBalances: number;
|
|
15
|
+
section: TSection;
|
|
16
|
+
sectionType: SectionType;
|
|
17
|
+
title: string;
|
|
18
|
+
hideBalances?: boolean;
|
|
19
|
+
}) => ReportTreeNode;
|
|
20
|
+
}): RootNodes;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CashFlowProjectViewReport } from '@zeniai/client-epic-state';
|
|
2
|
+
import { RootNodes } from '../../reportTree/ReportTree';
|
|
3
|
+
import { ReportElementConfig } from '../../reportTree/reportTreeTypes';
|
|
4
|
+
export declare function mapCashFlowProjectReportToReportTreeNodes(report: CashFlowProjectViewReport, config: ReportElementConfig, makeTimeframeRowSticky?: boolean, isPageFetchInProgress?: boolean): RootNodes;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { BalanceSheetClassesViewReport, BalanceSheetProjectViewReport, BalanceSheetReport, CashFlowReport, ProfitAndLossByClassHorizontalReport, ProfitAndLossClassesViewReport, ProfitAndLossProjectViewReport, ProfitAndLossReport } from '@zeniai/client-epic-state';
|
|
2
|
-
export type FinancialReport = ProfitAndLossReport | BalanceSheetReport | BalanceSheetClassesViewReport | BalanceSheetProjectViewReport | CashFlowReport | ProfitAndLossClassesViewReport | ProfitAndLossByClassHorizontalReport | ProfitAndLossProjectViewReport;
|
|
1
|
+
import { BalanceSheetClassesViewReport, BalanceSheetProjectViewReport, BalanceSheetReport, CashFlowClassesViewReport, CashFlowProjectViewReport, CashFlowReport, ProfitAndLossByClassHorizontalReport, ProfitAndLossClassesViewReport, ProfitAndLossProjectViewReport, ProfitAndLossReport } from '@zeniai/client-epic-state';
|
|
2
|
+
export type FinancialReport = ProfitAndLossReport | BalanceSheetReport | BalanceSheetClassesViewReport | BalanceSheetProjectViewReport | CashFlowClassesViewReport | CashFlowProjectViewReport | CashFlowReport | ProfitAndLossClassesViewReport | ProfitAndLossByClassHorizontalReport | ProfitAndLossProjectViewReport;
|
|
@@ -16,7 +16,7 @@ export interface RecipientDetailsFormData {
|
|
|
16
16
|
recipientType: SingleSelectFieldValue;
|
|
17
17
|
}
|
|
18
18
|
type FormDataKeys = keyof RecipientDetailsFormData;
|
|
19
|
-
declare const uniqueName: (sectionId: string, key: FormDataKeys) => `${string}.recipient` | `${string}.
|
|
19
|
+
declare const uniqueName: (sectionId: string, key: FormDataKeys) => `${string}.recipient` | `${string}.recipientEmail` | `${string}.recipientName` | `${string}.recipientType`;
|
|
20
20
|
export type RecipientFormKeyUniqueNames = ReturnType<typeof uniqueName>;
|
|
21
21
|
/**x
|
|
22
22
|
* Component & its Props
|
|
@@ -15,7 +15,7 @@ import { TransactionLineTableListEmptyRowProps, TransactionLineTableListRowProps
|
|
|
15
15
|
* - `project` — dropdown (no recommendations today, slot reserved)
|
|
16
16
|
* - `amount` — single right-aligned amount field (no Dr/Cr prefix)
|
|
17
17
|
*/
|
|
18
|
-
export declare const TransactionLineTableListRow: ({ accountList: _accountList, accountsHierarchyList, classHierarchyList, classList: _classList, columns, entityId, isCOTEnabled, isCompressed, isDisabled, isAddedLine, isSplitEditMode, isTransactionCommentingEnabled, line, lineIndex, onCOTView, openTooltipId, projects, searchAutoComplete: _searchAutoComplete, sectionId, setOpenTooltipId, transactionId, canDelete: _canDelete, onLineDelete: _onLineDelete, splitValidationErrors, }: TransactionLineTableListRowProps) => import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare const TransactionLineTableListRow: ({ accountList: _accountList, accountsHierarchyList, classHierarchyList, classList: _classList, columns, entityId, feedbackTransactionInfo, isCOTEnabled, isCompressed, isDisabled, isAddedLine, isSplitEditMode, isTransactionCommentingEnabled, line, lineIndex, onCOTView, openTooltipId, projects, searchAutoComplete: _searchAutoComplete, sectionId, setOpenTooltipId, transactionId, canDelete: _canDelete, onLineDelete: _onLineDelete, splitValidationErrors, }: TransactionLineTableListRowProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
19
|
/**
|
|
20
20
|
* Skeleton row consumed by `TransactionLinesEmptyTable`. Uses the same
|
|
21
21
|
* `RowItemContainer` as the live row so column widths line up 1:1.
|
package/dist/components/transactionDetail/items/transactionLineTable/transactionLineTableTypes.d.ts
CHANGED
|
@@ -81,6 +81,15 @@ export interface TransactionLineTableListRowProps {
|
|
|
81
81
|
* `isTransactionCommentingEnabled` to render the line's comment affordance.
|
|
82
82
|
*/
|
|
83
83
|
entityId?: ID;
|
|
84
|
+
/**
|
|
85
|
+
* Transaction-level fields shown read-only in the recommendation-feedback
|
|
86
|
+
* popup. The row supplies category / class / amount from its own line.
|
|
87
|
+
*/
|
|
88
|
+
feedbackTransactionInfo?: {
|
|
89
|
+
date?: string;
|
|
90
|
+
memo?: string;
|
|
91
|
+
vendor?: string;
|
|
92
|
+
};
|
|
84
93
|
/** When true this row was added during the current split-edit session (not yet persisted). */
|
|
85
94
|
isAddedLine?: boolean;
|
|
86
95
|
isDisabled?: DisableMode;
|
|
@@ -11,6 +11,7 @@ export declare enum DynamicConfigNamesCockpit {
|
|
|
11
11
|
export declare enum DynamicConfigNamesWebApp {
|
|
12
12
|
treDynamicConfig = "tre_dynamic_config",// ToDo : this is not anywhere as of now, added only for testing purpose.
|
|
13
13
|
documentAiReceiptMaxSizeLimitBytesConfig = "document_ai_receipt_max_size_limit_bytes_config",
|
|
14
|
+
meetingLinksConfig = "meeting_links_config",
|
|
14
15
|
zeniAssistConfig = "zeni_assist_config",
|
|
15
16
|
zeniCardsConfig = "zeni_cards_config",
|
|
16
17
|
zeniAccountsConfig = "deposit_accounts_config",
|
|
@@ -36,6 +37,7 @@ export declare const DynamicConfigNames: {
|
|
|
36
37
|
sessionAutoLogoutConfig: DynamicConfigNamesShared.sessionAutoLogoutConfig;
|
|
37
38
|
treDynamicConfig: DynamicConfigNamesWebApp.treDynamicConfig;
|
|
38
39
|
documentAiReceiptMaxSizeLimitBytesConfig: DynamicConfigNamesWebApp.documentAiReceiptMaxSizeLimitBytesConfig;
|
|
40
|
+
meetingLinksConfig: DynamicConfigNamesWebApp.meetingLinksConfig;
|
|
39
41
|
zeniAssistConfig: DynamicConfigNamesWebApp.zeniAssistConfig;
|
|
40
42
|
zeniCardsConfig: DynamicConfigNamesWebApp.zeniCardsConfig;
|
|
41
43
|
zeniAccountsConfig: DynamicConfigNamesWebApp.zeniAccountsConfig;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type MeetingLinkPlacement = "onboarding_overview" | "account_mapping" | "settings_integrations" | "invoicing_promo" | "invoicing_settings" | "zeni_accounts_promo" | "zeni_accounts_setup" | "charge_card_promo" | "charge_card_setup" | "reimbursement_promo" | "reimbursement_setup" | "bill_pay_promo" | "bill_pay_setup" | "treasury_promo" | "treasury_setup" | "forecast_pandl" | "dashboard_report_filters";
|
|
2
|
+
export declare const MEETING_LINK_DEFAULTS: Record<MeetingLinkPlacement, string>;
|
|
3
|
+
/**
|
|
4
|
+
* Returns a function that resolves a HubSpot booking URL for the given placement key.
|
|
5
|
+
*
|
|
6
|
+
* Resolution order (first match wins):
|
|
7
|
+
* 1. Statsig dynamic config "meeting_links_config" — if loaded and the key is present with a
|
|
8
|
+
* valid https://meetings.hubspot.com URL
|
|
9
|
+
* 2. DEFAULTS map — identical to the current hardcoded values; guarantees no blank iframes when
|
|
10
|
+
* Statsig is unreachable or the config key is missing
|
|
11
|
+
*
|
|
12
|
+
* Note: the CSP in zeni-web-app-v2 only allowlists https://meetings.hubspot.com. Values from
|
|
13
|
+
* Statsig that use a different host are silently rejected here and fall back to DEFAULTS so the
|
|
14
|
+
* CTA always opens a valid URL.
|
|
15
|
+
*/
|
|
16
|
+
export declare function useMeetingLinks(): (placement: MeetingLinkPlacement) => string;
|