///
export interface ComprehensiveSearchProps {
dataSource?: any;
isShowScanner?: boolean;
isShowCamera?: boolean;
isShowNFC?: boolean;
isShowNewButton?: boolean;
newButtonAlign?: 'left' | 'center' | 'right';
newButtonText?: string;
newDialogDataSource?: any;
renderType?: 'modal' | 'drawer' | 'portal' | '';
containerProps?: Record;
isShowSearch?: boolean;
isShowSearchCamera?: boolean;
searchIcon?: string;
placeholder?: string;
isShowSearchButton?: boolean;
resultDisplay?: 'list' | 'grid';
resultSort?: 'asc' | 'desc' | 'custom';
sortBy?: string;
style?: React.CSSProperties;
loading?: boolean;
/**
* 搜索关键字(受控 / 非受控开关)。
* - 传入(!== undefined)→ **受控**:输入框始终显示该值,需配合 `onKeywordChange` 回写。
* - 不传(undefined)→ **非受控**:组件内部自管显示,输入与扫码值都会自动回填输入框,
* 宿主仅通过 `onSearch` / `onScannerData` 获取结果即可。
*/
keyword?: string;
/**
* 是否开启扫码枪监听
* 通过宿主 `app.pubsub.subscribe('nativeScanResult', ...)` 订阅;
* 切换 false 时会 unsubscribe,停止接收事件。
* @default false
*/
enableScanner?: boolean;
/**
* 关键字变化回调(输入 / 扫码触发)。
* 受控用法下必传,用于把最新值回写到 `keyword`;非受控用法下可选。
*/
onKeywordChange?: (value: string) => void;
onSearch?: (value: string) => void;
onAdd?: () => void;
onDataChange?: (data: any) => void;
onRowClick?: (record: any, index: any) => void;
/**
* 扫码枪回调
* 监听到扫码枪事件时触发,参数为原始 payload 对象(含 `data` 字段)。
* 仅在 `enableScanner` 为 true 时才会触发。
*/
onScannerData?: (data: ComprehensiveSearchScannerData) => void;
}
/**
* 扫码枪回传数据(对齐宿主 ScanResultPayload,与 PisellFind 一致)
* - code: 条码标识(如条码格式 / 业务字段)
* - data: 扫描得到的字符串值(写入输入框的内容)
*/
export interface ComprehensiveSearchScannerData {
code: string;
data: string;
}
export interface SearchResult {
[key: string]: any;
}