From 704031ff2d1068803a3c125a479119470347255b Mon Sep 17 00:00:00 2001 From: ULIVZ <472590061@qq.com> Date: Sat, 8 Sep 2018 01:33:58 +0800 Subject: [PATCH] fix($core): content slots doesn't work --- packages/@vuepress/core/lib/app/app.js | 2 ++ .../core/lib/app/components/Content.js | 4 +++- .../app/components/ContentSlotsDistributor.js | 19 +++++++++++++++++++ packages/@vuepress/markdown-loader/index.js | 3 ++- 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 packages/@vuepress/core/lib/app/components/ContentSlotsDistributor.js diff --git a/packages/@vuepress/core/lib/app/app.js b/packages/@vuepress/core/lib/app/app.js index 87300ebdc3..272ca04262 100644 --- a/packages/@vuepress/core/lib/app/app.js +++ b/packages/@vuepress/core/lib/app/app.js @@ -11,6 +11,7 @@ import Store from './Store' // built-in components import Content from './components/Content' +import ContentSlotsDistributor from './components/ContentSlotsDistributor' import OutboundLink from './components/OutboundLink.vue' import ClientOnly from './components/ClientOnly' @@ -36,6 +37,7 @@ Vue.use(Router) Vue.mixin(dataMixin(ClientComputedMixin, siteData)) // component for rendering markdown content and setting title etc. Vue.component('Content', Content) +Vue.component('ContentSlotsDistributor', ContentSlotsDistributor) Vue.component('OutboundLink', OutboundLink) // component for client-only content Vue.component('ClientOnly', ClientOnly) diff --git a/packages/@vuepress/core/lib/app/components/Content.js b/packages/@vuepress/core/lib/app/components/Content.js index 58c433cd05..5d548daf80 100644 --- a/packages/@vuepress/core/lib/app/components/Content.js +++ b/packages/@vuepress/core/lib/app/components/Content.js @@ -22,7 +22,9 @@ export default { return h(pageKey, { class: [data.class, data.staticClass], style: data.style, - slot: props.slot || 'default' + props: { + slotKey: props.slot || 'default' + } }) } return h('') diff --git a/packages/@vuepress/core/lib/app/components/ContentSlotsDistributor.js b/packages/@vuepress/core/lib/app/components/ContentSlotsDistributor.js new file mode 100644 index 0000000000..b9b0bca8ca --- /dev/null +++ b/packages/@vuepress/core/lib/app/components/ContentSlotsDistributor.js @@ -0,0 +1,19 @@ +export default { + functional: true, + props: { + slotKey: String, + required: true + }, + render (h, { props, slots }) { + console.log(props.slotKey) + return h('div', + { + class: [ + 'content', + props.slotKey + ] + }, + slots()[props.slotKey] + ) + } +} diff --git a/packages/@vuepress/markdown-loader/index.js b/packages/@vuepress/markdown-loader/index.js index a72c7005e9..1864d90558 100644 --- a/packages/@vuepress/markdown-loader/index.js +++ b/packages/@vuepress/markdown-loader/index.js @@ -100,8 +100,9 @@ module.exports = function (src) { const res = ( `\n` + + `` + (hoistedTags || []).join('\n') + `\n${dataBlockString}\n` )