import React from 'react'; import type { BaseResponsiveProps } from '../../responsive'; import type { GlobalSearchMode, GlobalSearchPermissionContext, GlobalSearchProvider, GlobalSearchProviderLabel } from './types'; import './components/ScopeBar.less'; import './PisellGlobalSearchFullPage.less'; /** * PisellGlobalSearchFullPage 全局搜索 · 整页形态(目前唯一对外形态) * * - 占满 admin 路由的一个 page; * - 大搜索 Panel:Input + 独立"搜索"按钮 + Mode 切换(点按 / 回车提交); * - 搜索 Panel 下面紧跟一个 Radio.Group 范围切换(All / Orders ...); * - 双栏 body:左 = 结果区,右 = 管理模式下的订单详情侧栏(桌面); * - **不走 PisellLookup 弹层**,直接在页面内组装 useProviderSearch + 结果组件,避免再套一层 modal。 * * 与底层 PisellGlobalSearch 共享:providers 协议、useProviderSearch hook、结果组件、locales。 */ export interface PisellGlobalSearchFullPageProps extends BaseResponsiveProps { /** @deprecated 标题区已下线,保留该字段仅兼容旧 schema */ showHeader?: boolean; /** 占位符 */ placeholder?: string; /** 搜索按钮文案 @default 'Search' */ /** * 业务 providers 数组。 * * 通常无需显式传:lowcode 画布因为无法序列化 providers 函数,未传时壳层会自动回退到 * 内置真实 providers(`allProviders` → salesProvider,走 ES `/shop/es/search/sales`)。 * pro-code 需要自定义 provider 集合时再显式传入。 */ providers?: GlobalSearchProvider[]; /** 权限上下文,透传给 Provider.enabledWhen */ permissionContext?: GlobalSearchPermissionContext; /** 路由跳转函数 */ navigate?: (url: string) => void; /** @default true */ showModeSwitch?: boolean; /** @default 'business' */ defaultMode?: GlobalSearchMode; /** 受控 */ mode?: GlobalSearchMode; onModeChange?: (mode: GlobalSearchMode) => void; /** 自定义模式文案 */ modeOptions?: { admin?: GlobalSearchProviderLabel; business?: GlobalSearchProviderLabel; }; /** * @deprecated 已忽略;组件始终展示 All 范围(与各 Provider 一起露出), * 传入此 prop 不再生效,仅为旧 schema/调用方的类型兼容而保留。 */ showAllTab?: boolean; /** All 模式下每个 provider 展示条数 @default 5 */ allModePageSize?: number; /** 单 tab 模式下每页条数 @default 20 */ singleModePageSize?: number; /** * 是否开启硬件扫码枪监听(宿主 `nativeScanResult` 事件)。 * 全局搜索整页是主要扫码入口(如 WalletPass Code),默认开启; * 扫码结果会写入搜索框并触发搜索。需要规避全局 pubsub 串扰时可显式关闭。 * @default true */ enableScanner?: boolean; /** * localStorage key,透传给搜索框(PisellFind / PisellLookup)内置历史, * 与 Modal 形态共用同一份历史(`string[]` 格式)。 * @default 'pisell_global_search_history' */ historyKey?: string; /** 最多保留多少条历史 @default 10 */ maxHistoryCount?: number; className?: string; style?: React.CSSProperties; } /** * 对外导出:用 withResponsive 包裹,注入 `variant`(phone/desktop/...), * 用于「桌面右栏详情 / 手机抽屉详情」的分支与根节点 variant class。 */ export declare const PisellGlobalSearchFullPage: React.ForwardRefExoticComponent>; export default PisellGlobalSearchFullPage;