import type { ComponentMetadata, Snippet } from '@alilc/lowcode-types'; /** * PisellGlobalSearchFullPage 低代码 meta(整页形态 · 目前唯一对外形态) * * - 直接占满 admin 路由的整页全局搜索; * - 大搜索 panel + 双栏 body(左结果 / 右最近搜索); * - 提交式搜索(回车 / 按钮触发); * - Header 右上自带 Mode 切换。 */ const Meta: ComponentMetadata = { componentName: 'PisellGlobalSearchFullPage', title: '全局搜索 · 整页', category: 'Pro Components', group: '业务类', priority: 51, docUrl: '', screenshot: '', devMode: 'proCode', npm: { package: '@pisell/private-materials', version: '1.0.0', exportName: 'PisellGlobalSearchFullPage', main: 'src/index.ts', destructuring: true, subName: '', }, configure: { props: [ // ============ 页面外观 ============ { title: { label: { type: 'i18n', 'en-US': 'showHeader', 'zh-CN': '显示标题区' }, }, name: 'showHeader', setter: ['BoolSetter', 'VariableSetter'], defaultValue: true, }, { title: { label: { type: 'i18n', 'en-US': 'pageTitle', 'zh-CN': '页面主标题' }, }, name: 'pageTitle', setter: ['StringSetter', 'VariableSetter'], defaultValue: 'Global Search', }, { title: { label: { type: 'i18n', 'en-US': 'pageDescription', 'zh-CN': '页面副标题', }, }, name: 'pageDescription', setter: ['StringSetter', 'VariableSetter'], }, { title: { label: { type: 'i18n', 'en-US': 'placeholder', 'zh-CN': '占位符' }, }, name: 'placeholder', setter: ['StringSetter', 'VariableSetter'], }, { title: { label: { type: 'i18n', 'en-US': 'searchButtonText', 'zh-CN': '搜索按钮文案', }, }, name: 'searchButtonText', setter: ['StringSetter', 'VariableSetter'], defaultValue: '搜索', }, // ============ 数据接入 ============ { title: { label: { type: 'i18n', 'en-US': 'providers', 'zh-CN': '业务 Providers' }, }, name: 'providers', description: '只能通过 pro-code 注入(含函数与 ReactNode)。不传时组件默认回退内置真实 providers(走 ES)。', setter: ['JsonSetter', 'VariableSetter'], }, { title: { label: { type: 'i18n', 'en-US': 'navigate', 'zh-CN': '路由跳转函数' }, }, name: 'navigate', setter: 'FunctionSetter', }, // ============ 模式切换 ============ { title: { label: { type: 'i18n', 'en-US': 'showModeSwitch', 'zh-CN': '显示模式切换', }, }, name: 'showModeSwitch', description: 'Header 右上是否显示「管理/业务」模式切换', setter: ['BoolSetter', 'VariableSetter'], defaultValue: true, }, { title: { label: { type: 'i18n', 'en-US': 'defaultMode', 'zh-CN': '默认模式' }, }, name: 'defaultMode', setter: { componentName: 'SelectSetter', props: { options: [ { title: '业务模式 Business', value: 'business' }, { title: '管理模式 Admin', value: 'admin' }, ], }, }, defaultValue: 'business', }, { title: { label: { type: 'i18n', 'en-US': 'onModeChange', 'zh-CN': '模式变更回调' }, }, name: 'onModeChange', setter: 'FunctionSetter', }, // ============ 搜索行为 ============ // 注:`defaultActiveTab` 已移除——组件初始范围固定为 All,不再对外暴露/可控。 // 注:`showAllTab` 不在配置面板暴露——组件层默认就是 true, // 永远把 All / Orders... 范围露出来明示搜索作用域。 { title: { label: { type: 'i18n', 'en-US': 'enableScanner', 'zh-CN': '扫码枪监听', }, tip: '开启后监听宿主 `nativeScanResult` 事件,扫码结果写入搜索框并触发搜索。注意:宿主全局扫码桥(createGlobalScanHostBridge)也订阅同一事件,二者同时开启可能串扰;如需规避请关闭此项。默认开启。', }, name: 'enableScanner', setter: ['BoolSetter', 'VariableSetter'], defaultValue: true, }, // ============ 历史 / 最近记录 ============ { title: { label: { type: 'i18n', 'en-US': 'historyKey', 'zh-CN': '历史存储 key' }, }, name: 'historyKey', description: 'localStorage key(如多形态共存可共享同一 key 互通历史)', setter: ['StringSetter', 'VariableSetter'], defaultValue: 'pisell_global_search_history', }, { title: { label: { type: 'i18n', 'en-US': 'maxHistoryCount', 'zh-CN': '最大历史条数', }, }, name: 'maxHistoryCount', setter: ['NumberSetter', 'VariableSetter'], defaultValue: 10, }, { title: { label: { type: 'i18n', 'en-US': 'recentRecords', 'zh-CN': '最近记录(mock)', }, }, name: 'recentRecords', description: '空 keyword 时左主区展示的「最近记录」列表;真实接入时由业务方提供(如最近浏览的订单)', setter: ['JsonSetter', 'VariableSetter'], }, // ============ 通用 ============ { title: { label: { type: 'i18n', 'en-US': 'className', 'zh-CN': '类名' } }, name: 'className', setter: ['StringSetter', 'VariableSetter'], }, { title: { label: { type: 'i18n', 'en-US': 'style', 'zh-CN': '样式' } }, name: 'style', setter: ['StyleSetter', 'VariableSetter'], }, ], supports: { style: true, className: true, }, component: { isContainer: false, }, }, }; const snippets: Snippet[] = [ { title: '全局搜索 · 整页(订单 · 双栏 · 提交式)', screenshot: '', schema: { componentName: 'PisellGlobalSearchFullPage', props: { showHeader: true, pageTitle: '全局搜索', pageDescription: 'All-in-One Search', showModeSwitch: true, defaultMode: 'business', }, }, }, ]; export default { ...Meta, snippets, };