import React from 'react'; import './Tabs.css'; /** * Kole UI Tabs(React) * 对齐 组件7.txt PageTabs 规范:线型 / 卡片型 / 胶囊型,支持禁用、关闭、新增 * * props: * - value / defaultValue : 当前激活标签 key(受控 / 非受控) * - tabs : [{ key, label, disabled?, preventClose? }] * - type : 'line' | 'card' | 'pill'(默认 'line') * - closable / addable : Boolean * - onChange(key) / onTabRemove(key) / onTabAdd() * - renderPanel(key) / children(key) : 返回当前激活标签的内容 */ export default function Tabs({ value, defaultValue, tabs = [], type = 'line', closable = false, addable = false, onChange, onTabRemove, onTabAdd, renderPanel }) { const current = value !== undefined ? value : defaultValue; const panelFn = renderPanel || (typeof children === 'function' ? children : null); const choose = (tab) => { if (tab.disabled) return; onChange && onChange(tab.key); }; return (
{tabs.map((tab) => (
choose(tab)} > {tab.label} {closable && !tab.disabled && !tab.preventClose && ( { e.stopPropagation(); onTabRemove && onTabRemove(tab.key); }} >× )}
))} {addable && (
onTabAdd && onTabAdd()}>+
)}
{panelFn ? panelFn(current) : null}
); } /* 用法示例: import Tabs from './Tabs'; const tabs = [ { key: 'basic', label: '基本信息' }, { key: 'safe', label: '安全设置' }, { key: 'auth', label: '授权', disabled: true } ];
当前标签:{key}
} /> */