Skip to content
This repository was archived by the owner on Jan 18, 2022. It is now read-only.

Commit 2162de9

Browse files
committed
✨ import/export issue and slot in tables
Fixes #40 Fixes #38
1 parent 5bc78fb commit 2162de9

File tree

6 files changed

+45
-11
lines changed

6 files changed

+45
-11
lines changed

src/vueTransform.js

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,14 @@ function injectRender(script, render, lang, options) {
4343
if (['js', 'babel'].indexOf(lang.toLowerCase()) > -1) {
4444
const matches = /(export default[^{]*\{)/g.exec(script);
4545
if (matches) {
46-
const scriptWithRender = script.split(matches[1])
47-
// buble doesn't support export default, not even with the
48-
// module: false trasforms:
49-
// https://buble.surge.sh/guide/#using-es-modules
50-
.join('module.exports={' +
51-
`render: ${wrapRenderFunction(render.render)},` +
52-
'staticRenderFns: [' +
53-
`${render.staticRenderFns.map(wrapRenderFunction).join(',')}],`
54-
);
55-
return transpileVueTemplate(scriptWithRender, options.vue).replace('module.exports={', 'export default {');
46+
const renderScript = transpileVueTemplate('module.exports={' +
47+
`render: ${wrapRenderFunction(render.render)},` +
48+
'staticRenderFns: [' +
49+
`${render.staticRenderFns.map(wrapRenderFunction).join(',')}],}`, options.vue);
50+
const result = script.split(matches[1])
51+
.join(renderScript.replace('module.exports={', 'export default {').replace(/\}$/, ''));
52+
53+
return result;
5654
}
5755

5856
debug(`No injection location found in: \n${script}\n`);

test/expects/slot.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
var TableComponent = {render: function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._c;return _c('table',[_c('tr',[_c('td',[_vm._t("default",[_vm._t("default")])],true)])])},staticRenderFns: [],};
2+
3+
var slot = {render: function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._c;return _c('table-component',[_vm._v("Hello! World")])},staticRenderFns: [],
4+
components: { TableComponent },
5+
};
6+
7+
export default slot;

test/expects/table.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
var table = {render: function(){var _vm=this;var _h=_vm.$createElement;var _c=_vm._c;return _c('table',[_c('tr',[_c('td',[_vm._t("default",[_vm._t("default")])],true)])])},staticRenderFns: [],};
2+
3+
export default table;

test/fixtures/slot.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<template>
2+
<table-component>
3+
Hello! World
4+
</table-component>
5+
</template>
6+
7+
<script>
8+
import TableComponent from './table.vue';
9+
10+
export default {
11+
components: { TableComponent },
12+
}
13+
</script>

test/fixtures/table.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<template>
2+
<table>
3+
<tr>
4+
<td>
5+
<slot><slot>
6+
</td>
7+
</tr>
8+
</table>
9+
</template>
10+
11+
<script>
12+
export default {}
13+
</script>

test/test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ function test(name) {
2424
css (css) {
2525
actualCss = css
2626
},
27-
compileTemplate: name === 'compileTemplate'
27+
compileTemplate: ['compileTemplate', 'slot', 'table'].indexOf(name) > -1
2828
})]
2929
}).then(function (bundle) {
3030
var result = bundle.generate()

0 commit comments

Comments
 (0)