import type { ReactNode } from 'react'; import type { BaseResponsiveProps } from '../../responsive/type'; import type { SalesSdkCartContextValue, SalesSdkBookingContextValue, SalesSdkContextValue, SalesSdkCustomerContextValue, SalesSdkProviderProps, SalesSdkSummaryContextValue } from '../salesSdk'; import type { DetailActionConfig } from './components/DetailActions/types'; export declare type SaleDetailRenderType = 'current' | 'modal' | 'drawer'; export declare type SaleDetailTemplate = 'A' | 'B'; export declare type SaleDetailMobilePresentation = 'inline' | 'bottomSheet'; export declare type SaleDetailTabKey = 'summary' | 'invoice' | 'customer' | 'notes' | 'guests' | 'pay' | 'history' | 'ticket' | 'dish' | 'walletpass'; export declare type SaleDetailModuleKey = 'overview' | 'customer' | 'contact' | 'orderNote' | 'cartItems' | 'cartActions' | 'amountDetails' | 'orderActions' | 'promotionAlert'; export interface SaleDetailCartItemsLayoutConfig { columns?: number; } export interface SaleDetailModuleConfig { hidden?: SaleDetailModuleKey[]; cartItems?: { layout?: SaleDetailCartItemsLayoutConfig; showBookingItems?: boolean; showProductItems?: boolean; showProductImage?: boolean; showRemoveButton?: boolean; }; amountDetails?: { defaultExpanded?: boolean; }; /** * 覆盖模板 A 底部订单操作按钮;不传时使用默认 TEMPLATE_A_ACTIONS。 * * @example * { orderActions: [{ key: 'note' }, { key: 'save' }, { key: 'checkout-cart' }] } */ orderActions?: DetailActionConfig[]; } export interface SaleDetailTabItem { key: SaleDetailTabKey; title: ReactNode; content: ReactNode; iconType?: string; badgeCount?: number; } export interface SaleDetailContext { sales: SalesSdkContextValue; customer: SalesSdkCustomerContextValue; cart: SalesSdkCartContextValue; summary: SalesSdkSummaryContextValue; booking?: SalesSdkBookingContextValue; /** * 弹窗场景(如 BigSaleDialog)在保存 / 结账成功后回调,用于关闭外层容器。 * * @example * onOrderComplete?.({ type: 'save', order_id: 123, reset: true }); */ onOrderComplete?: (payload: SaleDetailOrderCompletePayload) => void; } /** 对齐 TicketBookingDialog callback 的 save / checkout 语义。 */ export interface SaleDetailOrderCompletePayload { type: 'save' | 'checkout'; data?: any; order_id?: number | string; reset?: boolean; } interface SaleDetailBaseProps extends BaseResponsiveProps { context?: SaleDetailContext; tmpl?: SaleDetailTemplate; template?: SaleDetailTemplate; moduleConfig?: SaleDetailModuleConfig; mobilePresentation?: SaleDetailMobilePresentation; /** * 仅模板 B 的 summary tab 生效:开启后将「金额明细 + 底部金额汇总/操作按钮」 * 抽到右侧独立列,与左侧订单内容形成两栏(宽度不足时自动回落为单栏堆叠), * 同时底部操作按钮改为一行一个。默认 false,不影响其他用法。 */ summaryTwoColumn?: boolean; } export interface SaleDetailSdkProviderProps { osProps: Pick; } export declare type SaleDetailBaseComponentProps = SaleDetailBaseProps & ({ renderType?: 'current'; containerProps?: never; } | { renderType: Exclude; containerProps: Record; }); export declare type SaleDetailProps = SaleDetailBaseComponentProps & SaleDetailSdkProviderProps; export interface SaleDetailBlockProps { dataSource: TDisplayData; className?: string; } export {};