diff --git a/site/bisheng-plugin-antd/lib/node.js b/site/bisheng-plugin-antd/lib/node.js
new file mode 100644
index 0000000000..4b11bf253c
--- /dev/null
+++ b/site/bisheng-plugin-antd/lib/node.js
@@ -0,0 +1,11 @@
+const path = require('path');
+const processDoc = require('./process-doc');
+const processDemo = require('./process-demo');
+
+module.exports = (markdownData) => {
+ const isDemo = path.dirname(markdownData.meta.filename).endsWith('/demo');
+ if (isDemo) {
+ return processDemo(markdownData);
+ }
+ return processDoc(markdownData);
+};
diff --git a/site/bisheng-plugin-antd/lib/process-demo.js b/site/bisheng-plugin-antd/lib/process-demo.js
new file mode 100644
index 0000000000..8109750a8f
--- /dev/null
+++ b/site/bisheng-plugin-antd/lib/process-demo.js
@@ -0,0 +1,3 @@
+module.exports = (markdownData) => {
+ return markdownData;
+};
diff --git a/site/bisheng-plugin-antd/lib/process-doc.js b/site/bisheng-plugin-antd/lib/process-doc.js
new file mode 100644
index 0000000000..940d892c45
--- /dev/null
+++ b/site/bisheng-plugin-antd/lib/process-doc.js
@@ -0,0 +1,15 @@
+const JsonML = require('jsonml.js/lib/utils');
+
+module.exports = (markdownData) => {
+ const contentChildren = JsonML.getChildren(markdownData.content);
+ const apiStartIndex = contentChildren.findIndex((node) => {
+ return JsonML.getTagName(node) === 'h2' &&
+ JsonML.getChildren(node)[0] === 'API';
+ });
+ const content = contentChildren.slice(0, apiStartIndex);
+ const api = contentChildren.slice(apiStartIndex);
+
+ markdownData.content = ['section'].concat(content);
+ markdownData.api = ['section'].concat(api);
+ return markdownData;
+};
diff --git a/site/theme/index.js b/site/theme/index.js
index b2fe86bbf5..1a0790078a 100644
--- a/site/theme/index.js
+++ b/site/theme/index.js
@@ -1,3 +1,5 @@
+const contentTmpl = './template/Content/index';
+
export default {
categoryOrder: {
组件: 0,
@@ -20,15 +22,11 @@ export default {
},
routes: {
'/': './template/Home/index',
- '/docs/practice/:children': './template/Content/index',
- '/docs/pattern/:children': './template/Content/index',
- '/docs/spec/:children': './template/Content/index',
- '/docs/resource/:children': './template/Content/index',
- },
- redirects: {
- '/docs/practice': '/docs/practice/cases',
- '/docs/pattern': '/docs/pattern/navigation',
- '/docs/spec': '/docs/spec/introduce',
- '/docs/resource': '/docs/resource/download',
+ '/docs/practice/:children': contentTmpl,
+ '/docs/pattern/:children': contentTmpl,
+ '/docs/react/:children': contentTmpl,
+ '/components/:children': contentTmpl,
+ '/docs/spec/:children': contentTmpl,
+ '/docs/resource/:children': contentTmpl,
},
};
diff --git a/site/common/styles/font.less b/site/theme/static/font.less
similarity index 100%
rename from site/common/styles/font.less
rename to site/theme/static/font.less
diff --git a/site/common/styles/highlight.less b/site/theme/static/highlight.less
similarity index 100%
rename from site/common/styles/highlight.less
rename to site/theme/static/highlight.less
diff --git a/site/theme/static/markdown.less b/site/theme/static/markdown.less
index 7d59a03458..2209bc32a9 100644
--- a/site/theme/static/markdown.less
+++ b/site/theme/static/markdown.less
@@ -99,7 +99,6 @@
.markdown pre code {
border: none;
- padding: 1em 2em;
background: #f7f7f7;
margin: 0;
font-size: 13px;
diff --git a/site/theme/static/style.js b/site/theme/static/style.js
index 4042d44f0b..1c9d612dd7 100644
--- a/site/theme/static/style.js
+++ b/site/theme/static/style.js
@@ -9,3 +9,5 @@ import './responsive.less';
import './preview-img.less';
import './toc.less';
import './not-found.less';
+import './font.less';
+import './highlight.less';
diff --git a/site/theme/template/Content/Article.jsx b/site/theme/template/Content/Article.jsx
index b3733c52c8..0fbe5def03 100644
--- a/site/theme/template/Content/Article.jsx
+++ b/site/theme/template/Content/Article.jsx
@@ -42,7 +42,7 @@ export default class Article extends React.Component {
}
render() {
const { content, location } = this.props;
- const jumper = content.toc.map((node) => {
+ const jumper = (content.toc || []).map((node) => {
return (
diff --git a/site/component/ComponentDoc/index.jsx b/site/theme/template/Content/ComponentDoc.jsx
similarity index 89%
rename from site/component/ComponentDoc/index.jsx
rename to site/theme/template/Content/ComponentDoc.jsx
index 683ce2d895..2d360652ef 100644
--- a/site/component/ComponentDoc/index.jsx
+++ b/site/theme/template/Content/ComponentDoc.jsx
@@ -2,9 +2,9 @@ import React from 'react';
import { Link } from 'react-router';
import classNames from 'classnames';
import { Row, Col, Icon, Affix } from 'antd';
-import Demo from '../Demo';
+import { getChildren } from 'jsonml.js/lib/utils';
+import Demo from './Demo';
import * as utils from '../utils';
-import demosList from '../../../_data/demos-list';
export default class ComponentDoc extends React.Component {
static contextTypes = {
@@ -34,11 +34,12 @@ export default class ComponentDoc extends React.Component {
}
render() {
- const { doc, location } = this.props;
+ const props = this.props;
+ const { doc, location } = props;
const scrollTo = location.query.scrollTo;
- const { description, meta } = doc;
+ const { content, meta } = doc;
const locale = this.context.intl.locale;
- const demos = (demosList[meta.fileName.replace(`.${locale}`, '')] || [])
+ const demos = Object.keys(props.demos).map((key) => props.demos[key])
.filter((demoData) => !demoData.meta.hidden);
const expand = this.state.expandAll;
@@ -91,10 +92,9 @@ export default class ComponentDoc extends React.Component {
{meta.title || meta.english} {meta.subtitle || meta.chinese}
{
- utils.jsonmlToComponent(
- location.pathname,
+ props.utils.toReactComponent(
['section', { className: 'markdown' }]
- .concat(description)
+ .concat(getChildren(content))
)
}
@@ -118,8 +118,7 @@ export default class ComponentDoc extends React.Component {
}
{
- utils.jsonmlToComponent(
- location.pathname,
+ props.utils.toReactComponent(
['section', {
className: 'markdown api-container',
}].concat(doc.api || [])
diff --git a/site/component/Demo/index.jsx b/site/theme/template/Content/Demo.jsx
similarity index 100%
rename from site/component/Demo/index.jsx
rename to site/theme/template/Content/Demo.jsx
diff --git a/site/theme/template/Content/MainContent.jsx b/site/theme/template/Content/MainContent.jsx
index 50cd89c3d3..f3ff1eb645 100644
--- a/site/theme/template/Content/MainContent.jsx
+++ b/site/theme/template/Content/MainContent.jsx
@@ -3,6 +3,7 @@ import { Link } from 'react-router';
import scrollIntoView from 'dom-scroll-into-view';
import { Row, Col, Menu } from 'antd';
import Article from './Article';
+import ComponentDoc from './ComponentDoc';
import * as utils from '../utils';
import config from '../../';
const SubMenu = Menu.SubMenu;
@@ -101,7 +102,16 @@ export default class MainContent extends React.Component {
getMenuItems() {
const props = this.props;
- const moduleData = props.utils.get(props.data, props.location.pathname.split('/').slice(0, 2));
+ let moduleData;
+ if (/(docs\/react\/)|(components\/)/i.test(props.location.pathname)) {
+ moduleData = {
+ ...props.data.docs.react,
+ ...props.data.components,
+ };
+ } else {
+ moduleData = props.utils.get(props.data, props.location.pathname.split('/').slice(0, 2));
+ }
+
const menuItems = utils.getMenuItems(moduleData, this.context.intl.locale);
const topLevel = this.generateSubMenuItems(menuItems.topLevel);
const subMenu = Object.keys(menuItems).filter(this.isNotTopLevel)
@@ -153,7 +163,17 @@ export default class MainContent extends React.Component {
const { prev, next } = this.getFooterNav(menuItems, activeMenuItem);
const locale = this.context.intl.locale;
- const moduleData = props.utils.get(props.data, props.location.pathname.split('/').slice(0, 2));
+ let moduleData;
+ if (/(docs\/react\/)|(components\/)/i.test(props.location.pathname)) {
+ moduleData = {
+ ...props.data.docs.react,
+ ...props.data.components,
+ };
+ } else {
+ moduleData = props.utils.get(props.data, props.location.pathname.split('/').slice(0, 2));
+ }
+ const pageData = props.pageData.index || props.pageData;
+ const localizedPageData = pageData[locale] || pageData;
return (
@@ -165,7 +185,11 @@ export default class MainContent extends React.Component {
-
+ {
+ props.pageData.demo ?
+ :
+
+ }
diff --git a/site/theme/template/Layout/Header.jsx b/site/theme/template/Layout/Header.jsx
index 0708c6e076..bc9266e623 100644
--- a/site/theme/template/Layout/Header.jsx
+++ b/site/theme/template/Layout/Header.jsx
@@ -169,27 +169,27 @@ export default class Header extends React.Component {
-
+
-
+
-
+
-
+
-
+