Skip to content

Commit 3f793b4

Browse files
authored
feat(example): 支持omi组件格式 (#48)
1 parent abf2f3f commit 3f793b4

File tree

5 files changed

+45
-5
lines changed

5 files changed

+45
-5
lines changed

script/plugin-tdoc/demo.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export default function renderDemo(md, container) {
2525
const [, demoPath, componentName = ''] = match;
2626
const demoPathOnlyLetters = demoPath.replace(/[^a-zA-Z\d]/g, '');
2727
const demoName = path.basename(demoPath).trim();
28-
const demoDefName = `Demo${demoPathOnlyLetters}`;
28+
const demoDefName = `Demo${demoPathOnlyLetters}Component`;
2929
const demoCodeDefName = `Demo${demoPathOnlyLetters}Code`;
3030

3131
const tpl = `
@@ -34,7 +34,7 @@ export default function renderDemo(md, container) {
3434
3535
</div>
3636
<div className="tdesign-demo-item__body">
37-
<div style={{width: '100%'}}><${demoDefName} /></div>
37+
<div style={{width: '100%'}}>{${demoDefName}}</div>
3838
</div>
3939
</td-doc-demo>
4040
`;

script/plugin-tdoc/md-to-wc.mjs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,16 @@ function getGitTimestamp(file) {
3131

3232
export default async function mdToReact(options) {
3333
const mdSegment = await customRender(options);
34-
const { demoDefsStr, demoCodesDefsStr } = options;
34+
const { demoDefsStr, demoCodesDefsStr, components } = options;
3535

3636
const reactSource = `
37-
import { h } from 'omi';
37+
import { h, define } from 'omi';
3838
import { signal, effect } from 'reactive-signal'
3939
import Prismjs from 'prismjs';
4040
import 'prismjs/components/prism-bash.js';
4141
${demoDefsStr}
4242
${demoCodesDefsStr}
43+
${components}
4344
4445
export default function TdDoc() {
4546
const isComponent = ${mdSegment.isComponent};

script/plugin-tdoc/transforms.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,27 @@ export default {
4444
.map((key) => demoCodesImports[key])
4545
.join('\n');
4646

47+
const components = Object.keys(demoImports)
48+
.map(
49+
(key) => `
50+
let ${key}Component = null;
51+
if('${key}'.endsWith('omi')){
52+
define('t-${key.toLocaleLowerCase()}', ${key});
53+
${key}Component = <t-${key.toLocaleLowerCase()} />;
54+
} else {
55+
${key}Component = <${key} />;
56+
};
57+
`,
58+
)
59+
.join('\n');
60+
4761
const sfc = mdToWc({
4862
md,
4963
file,
5064
source,
5165
demoDefsStr,
5266
demoCodesDefsStr,
67+
components,
5368
});
5469
return sfc;
5570
},

src/button/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ spline: base
88

99
### 基础使用
1010

11-
{{ base }}
11+
{{ base-omi }}
1212

1313
### 图标按钮
1414

src/button/_example/base-omi.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import 'tdesign-web-components/button';
2+
3+
import { Component } from 'omi';
4+
5+
export default class Button extends Component {
6+
render() {
7+
return (
8+
<div style={{ gap: 16, display: 'inline-flex' }}>
9+
<t-button theme="default" variant="base">
10+
填充按钮
11+
</t-button>
12+
<t-button theme="default" variant="outline">
13+
描边按钮
14+
</t-button>
15+
<t-button theme="default" variant="dashed">
16+
虚框按钮
17+
</t-button>
18+
<t-button theme="default" variant="text">
19+
文字按钮
20+
</t-button>
21+
</div>
22+
);
23+
}
24+
}

0 commit comments

Comments
 (0)