import snippets from './snippets'; const PisellProcedureMeta = { componentName: 'PisellProcedure', title: '流程容器', category: '容器', docUrl: '', screenshot: '', devMode: 'proCode', npm: { package: '@pisell/materials', version: '1.0.3', exportName: 'PisellProcedure', main: 'src/index.tsx', destructuring: true, subName: '', }, configure: { props: [ // ========== 通用配置 ========== { title: { label: { type: 'i18n', 'en-US': 'General', 'zh-CN': '通用配置', }, }, display: 'block', type: 'group', items: [ { name: 'mode', title: { label: '使用模式', tip: 'mode | 组件使用模式:page(页面模式)或 modal(弹窗模式)。弹窗模式下不应用移动端模式、不隐藏信息区、不强制底部悬浮、不显示移动端总结按钮', }, propType: { type: 'oneOf', value: ['page', 'modal'], }, setter: { componentName: 'RadioGroupSetter', props: { options: [ { title: '页面模式', value: 'page' }, { title: '弹窗模式', value: 'modal' }, ], }, }, defaultValue: 'page', }, { name: 'showHeader', title: { label: '显示头部', tip: 'showHeader | 是否显示头部区域', }, propType: 'bool', setter: 'BoolSetter', defaultValue: true, }, { name: 'showSidebar', title: { label: '显示信息区', tip: 'showSidebar | 是否显示信息区(侧边栏)', }, propType: 'bool', setter: 'BoolSetter', defaultValue: true, }, { name: 'showFooter', title: { label: '显示底部', tip: 'showFooter | 是否显示底部区域', }, propType: 'bool', setter: 'BoolSetter', defaultValue: true, }, ], }, // ========== 步骤控制配置 ========== { title: { label: { type: 'i18n', 'en-US': 'Step Control', 'zh-CN': '步骤控制', }, }, display: 'block', type: 'group', items: [ { name: 'defaultCurrent', title: { label: '初始步骤', tip: 'defaultCurrent | 初始步骤索引,从 0 开始', }, propType: 'number', setter: 'NumberSetter', defaultValue: 0, }, ], }, // ========== 头部区域配置 (8.2) ========== { title: { label: { type: 'i18n', 'en-US': 'Header Config', 'zh-CN': '头部区域配置', }, }, display: 'block', type: 'group', items: [ { name: 'headerProps.className', title: { label: '头部类名', tip: '自定义头部区域类名', }, propType: 'string', setter: 'StringSetter', }, { name: 'headerProps.left', title: { label: '左侧插槽', tip: '头部左侧区域,可放置返回按钮等', }, propType: 'node', setter: { componentName: 'SlotSetter', initialValue: { type: 'JSSlot', value: [], }, }, }, { name: 'headerProps.right', title: { label: '右侧插槽', tip: '头部右侧区域,可放置关闭按钮等', }, propType: 'node', setter: { componentName: 'SlotSetter', initialValue: { type: 'JSSlot', value: [], }, }, }, { name: 'headerProps.slotOrder', title: { label: '插槽顺序', tip: 'default: 默认顺序(left 在左,right 在右);reverse: 反转顺序(left 在右,right 在左,关闭按钮可在左侧)', }, propType: { type: 'oneOf', value: ['default', 'reverse'], }, setter: { componentName: 'SelectSetter', props: { options: [ { title: '默认顺序', value: 'default' }, { title: '反转顺序', value: 'reverse' }, ], }, }, defaultValue: 'default', }, { name: 'headerProps.showSteps', title: { label: '显示步骤条', tip: '是否显示步骤条,设置为 false 可隐藏步骤条', }, propType: 'bool', setter: 'BoolSetter', defaultValue: true, }, { name: 'headerProps.showBackOnFirstStep', title: { label: '首步显示返回', tip: '第一步时是否显示返回按钮,默认不显示', }, propType: 'bool', setter: 'BoolSetter', defaultValue: false, }, { name: 'headerProps.backConfirmModal.enabled', title: { label: '启用返回确认', tip: '返回上一步时是否需要弹窗确认', }, propType: 'bool', setter: 'BoolSetter', defaultValue: true, }, { name: 'headerProps.backConfirmModal.title', title: { label: '确认弹窗标题', tip: '返回确认弹窗的标题', }, setter: 'StringSetter', }, { name: 'headerProps.backConfirmModal.describe', title: { label: '确认弹窗内容', tip: '返回确认弹窗的内容', }, setter: 'StringSetter', }, { name: 'headerProps.backConfirmModal.footer', title: { label: '返回弹窗按钮组', tip: '弹窗底部按钮配置数组', }, propType: 'node', setter: { componentName: 'SlotSetter', initialValue: { type: 'JSSlot', value: [], }, }, }, { name: 'headerProps.closeConfirmModal.enabled', title: { label: '启用关闭确认', tip: '点击右侧关闭按钮时是否需要弹窗确认', }, propType: 'bool', setter: 'BoolSetter', defaultValue: false, }, { name: 'headerProps.closeConfirmModal.title', title: { label: '关闭弹窗标题', tip: '关闭确认弹窗的标题', }, setter: 'StringSetter', }, { name: 'headerProps.closeConfirmModal.describe', title: { label: '关闭弹窗内容', tip: '关闭确认弹窗的内容', }, setter: 'StringSetter', }, { name: 'headerProps.closeConfirmModal.footer', title: { label: '关闭弹窗按钮组', tip: '弹窗底部按钮配置数组', }, propType: 'node', setter: { componentName: 'SlotSetter', initialValue: { type: 'JSSlot', value: [], }, }, }, ], }, // ========== 步骤条配置 (8.5) ========== { title: { label: { type: 'i18n', 'en-US': 'Steps Config', 'zh-CN': '步骤条配置', }, }, display: 'block', type: 'group', items: [ { name: 'headerProps.stepsProps.current', title: { label: '当前步骤', tip: '当前激活的步骤索引', }, propType: 'number', setter: ['NumberSetter', 'VariableSetter'], defaultValue: 0, }, { name: 'headerProps.stepsProps.items', title: { label: '步骤数据', tip: '步骤条的数据配置', }, propType: 'array', setter: { componentName: 'ArraySetter', props: { itemSetter: { componentName: 'ObjectSetter', props: { items: [ { name: 'title', title: '标题', propType: 'string', setter: ['PisellI18nSetter', 'StringSetter', 'VariableSetter'], }, { name: 'description', title: '描述', propType: 'string', setter: ['PisellI18nSetter', 'StringSetter', 'VariableSetter'], }, ], }, }, }, }, }, ], }, // ========== 主体区域配置 (8.3) ========== { title: { label: { type: 'i18n', 'en-US': 'Body Config', 'zh-CN': '主体区域配置', }, }, display: 'block', type: 'group', items: [ { name: 'bodyProps.direction', title: { label: '排列方向', tip: '内容区和信息区的排列方向。horizontal: 横向排列(左右布局),vertical: 纵向排列(上下布局)', }, propType: { type: 'oneOf', value: ['horizontal', 'vertical'], }, setter: { componentName: 'SelectSetter', props: { options: [ { title: '横向排列', value: 'horizontal' }, { title: '纵向排列', value: 'vertical' }, ], }, }, defaultValue: 'horizontal', }, { name: 'bodyProps.contentOrder', title: { label: '内容顺序', tip: 'content-first: 内容区在前(默认:横向时内容区在左,纵向时内容区在上);sidebar-first: 信息区在前(横向时信息区在左,纵向时信息区在上)', }, propType: { type: 'oneOf', value: ['content-first', 'sidebar-first'], }, setter: { componentName: 'SelectSetter', props: { options: [ { title: '内容区在前', value: 'content-first' }, { title: '信息区在前', value: 'sidebar-first' }, ], }, }, defaultValue: 'content-first', }, { name: 'bodyProps.layoutMode', title: { label: '布局模式', tip: 'fixed: 固定宽度(信息区宽度随屏幕断点变化);ratio: 比例布局(按设定比例分配宽度)', }, propType: 'string', setter: { componentName: 'RadioGroupSetter', props: { options: [ { title: '固定宽度', value: 'fixed' }, { title: '比例布局', value: 'ratio' }, ], }, }, defaultValue: 'fixed', }, { name: 'bodyProps.layoutRatio', title: { label: '布局比例', tip: '内容区与信息区的宽度比例,仅在比例布局模式下生效', }, propType: 'string', setter: { componentName: 'SelectSetter', props: { options: [ { title: '7:3', value: '7:3' }, { title: '6:4', value: '6:4' }, ], }, }, defaultValue: '7:3', condition: { type: 'JSFunction', value: 'target => target.getProps().getPropValue("bodyProps.layoutMode") === "ratio"', }, }, { name: 'bodyProps.className', title: { label: '主体类名', tip: '自定义主体区域类名', }, propType: 'string', setter: 'StringSetter', }, ], }, // ========== 内容区配置 (8.3.1) ========== { title: { label: { type: 'i18n', 'en-US': 'Content Config', 'zh-CN': '内容区配置', }, }, display: 'block', type: 'group', items: [ { name: 'bodyProps.contentClassName', title: { label: '内容区类名', tip: '自定义内容区类名', }, propType: 'string', setter: 'StringSetter', }, { name: 'bodyProps.contentSlot', title: { label: '内容区插槽', tip: '主体内容区域', }, propType: 'node', setter: { componentName: 'SlotSetter', initialValue: { type: 'JSSlot', value: [], }, }, }, ], }, // ========== 信息区配置 (8.3.2) ========== { title: { label: { type: 'i18n', 'en-US': 'Sidebar Config', 'zh-CN': '信息区配置', }, }, display: 'block', type: 'group', items: [ { name: 'bodyProps.sidebarClassName', title: { label: '信息区类名', tip: '自定义信息区类名', }, propType: 'string', setter: 'StringSetter', }, { name: 'bodyProps.sidebarSlot', title: { label: '信息区插槽', tip: '右侧信息区域', }, propType: 'node', setter: { componentName: 'SlotSetter', initialValue: { type: 'JSSlot', value: [], }, }, }, { name: 'bodyProps.sidebarContainerSelector', title: { label: { type: 'i18n', 'en-US': 'Sidebar Container Selector', 'zh-CN': '信息区容器选择器', }, tip: '用于计算信息区高度的容器元素选择器(类名或 ID),如 ".modal-content" 或 "#dialog-container"。如果不提供,则使用 window.innerHeight 作为基准。', }, propType: 'string', setter: ['StringSetter', 'VariableSetter'], }, ], }, // ========== 底部操作区配置 (8.4) ========== { title: { label: { type: 'i18n', 'en-US': 'Footer Config', 'zh-CN': '底部操作区配置', }, }, display: 'block', type: 'group', items: [ { name: 'footerProps.position', title: { label: '位置模式', tip: '底部操作区的展示位置', }, propType: 'string', setter: { componentName: 'SelectSetter', props: { options: [ { title: '固定在底部', value: 'fixed-bottom' }, { title: '内嵌在内容区底部', value: 'fixed-content-bottom' }, { title: '内嵌在信息区底部', value: 'fixed-sidebar-bottom' }, { title: '悬浮在整体区域', value: 'float-all' }, { title: '悬浮在内容区', value: 'float-content' }, { title: '悬浮在信息区', value: 'float-sidebar' }, ], }, }, defaultValue: 'float-sidebar', }, { name: 'footerProps.className', title: { label: '底部类名', tip: '自定义底部区域类名', }, propType: 'string', setter: 'StringSetter', }, { name: 'footerProps.enableOverflow', title: { label: '启用溢出收纳', tip: '当宽度不足时,将次序列的按钮收纳到 More 菜单中', }, propType: 'bool', setter: 'BoolSetter', defaultValue: true, }, { name: 'footerProps.moreText', title: { label: 'More按钮文案', tip: '溢出收纳时 More 按钮的文案', }, propType: 'string', setter: ['PisellI18nSetter', 'StringSetter'], defaultValue: 'More', }, { name: 'footerProps.summaryButton', title: { label: '移动端总结按钮', tip: '移动端显示的总结按钮插槽', }, propType: 'node', setter: { componentName: 'SlotSetter', initialValue: { type: 'JSSlot', value: [], }, }, }, { name: 'footerProps.leftSlot', title: { label: '左侧插槽', tip: '底部左侧区域,可放置自定义内容(如总价信息、提示文案等)', }, propType: 'node', setter: { componentName: 'SlotSetter', initialValue: { type: 'JSSlot', value: [], }, }, }, { name: 'footerProps.actions', title: { label: '操作按钮组', tip: '底部右侧操作按钮区域(如上一步、下一步、提交等)。最后一个按钮默认触发下一步。可通过 data-action 属性自定义:data-action="prev"(上一步)、data-action="next"(下一步)', }, propType: 'node', setter: { componentName: 'SlotSetter', initialValue: { type: 'JSSlot', value: [], }, }, }, ], }, ], component: { isContainer: true, }, supports: { style: true, className: true, events: [ { name: 'onStepsChange', description: '步骤变化回调,返回步骤变化结果(包含 success、currentStep、currentItem)', }, { name: 'onPrev', description: '上一步事件回调,在步骤更新之前触发,返回 false 可阻止步骤更新', }, { name: 'onNext', description: '下一步事件回调,在步骤更新之前触发,返回 false 可阻止步骤更新', }, { name: 'onClose', description: '关闭按钮点击回调', }, { name: 'onFirstStepBack', description: '首步返回按钮点击回调,当在第一步且显示返回按钮时触发,如果不传递默认跳转到首页(/)', }, { name: 'onBackConfirm', description: '返回确认弹窗按钮回调,当点击返回确认弹窗的按钮时触发', }, { name: 'onCloseConfirm', description: '关闭确认弹窗按钮回调,当点击关闭确认弹窗的按钮时触发', }, ], }, }, snippets, }; export default PisellProcedureMeta;