UNPKG

@aplus-frontend/antdv

Version:

Vue basic component library maintained based on ant-design-vue

78 lines 2.34 kB
import { Fragment as _Fragment, createVNode as _createVNode } from "vue"; import { createCache, extractStyle as extStyle, StyleProvider } from '../cssinjs'; import * as antd from '../../components'; import { renderToString } from 'vue/server-renderer'; const blackList = ['ConfigProvider', 'Grid', 'Tour', 'SelectOptGroup', 'SelectOption', 'MentionsOption', 'TreeNode', 'TreeSelectNode', 'LocaleProvider']; const pickerMap = { MonthPicker: 'month', WeekPicker: 'week', QuarterPicker: 'quarter' }; const compChildNameMap = { MenuDivider: 'Menu', MenuItem: 'Menu', MenuItemGroup: 'Menu', SubMenu: 'Menu', TableColumn: 'Table', TableColumnGroup: 'Table', TableSummary: 'Table', TableSummaryRow: 'Table', TableSummaryCell: 'Table', TabPane: 'Tabs', TimelineItem: 'Timeline' }; const defaultNode = () => _createVNode(_Fragment, null, [Object.keys(antd).filter(name => !blackList.includes(name) && name[0] === name[0].toUpperCase()).map(compName => { const Comp = antd[compName]; if (compName === 'Dropdown') { return _createVNode(Comp, { "key": compName, "menu": { items: [] } }, { default: () => [_createVNode("div", null, null)] }); } if (compName === 'Anchor') { return _createVNode(Comp, { "key": compName, "items": [] }, null); } if (compName in pickerMap) { const Comp = antd['DatePicker']; const type = pickerMap[compName]; return _createVNode(Comp, { "key": compName, "picker": type }, null); } if (compName in compChildNameMap) { const ParentComp = antd[compChildNameMap[compName]]; return _createVNode(ParentComp, null, { default: () => [_createVNode(Comp, null, null)] }); } if (compName === 'QRCode' || compName === 'Segmented') { return _createVNode(Comp, { "key": compName, "value": '' }, { default: () => [_createVNode("div", null, null)] }); } return _createVNode(Comp, { "key": compName }, null); })]); export function extractStyle(customTheme) { const cache = createCache(); renderToString(_createVNode(StyleProvider, { "cache": cache }, { default: () => [customTheme ? customTheme(defaultNode()) : defaultNode()] })); // Grab style from cache const styleText = extStyle(cache, true); return styleText; }