Skip to content

Commit a92f268

Browse files
committed
Native column templating, sort-of
1 parent 043e7ac commit a92f268

File tree

8 files changed

+26
-24
lines changed

8 files changed

+26
-24
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -404,8 +404,8 @@ If you're like us, you want to write as little code as possible; as in, applicat
404404
3. Wrap individual action events you want to expose, or simply wrap with v-on="$listeners" to pipe all events from this component to your component.
405405
406406
## Roadmap
407-
- [ ] Native column templating. It may be possible to natively template and render column with all @events wired up. Still need to look into this.
408-
- [ ] Inline editable. This will depend on native column templating capability.
407+
- [x] Native column templating.
408+
- [ ] Inline editable.
409409
- [ ] This library is inspired by both [Bootstrap-Vue](https://bootstrap-vue.js.org/) and [jQuery DataTables](https://datatables.net/). Look into creating jQuery DataTables server-side items provider for [Bootstrap-Vue Table](https://bootstrap-vue.js.org/docs/components/table#field-definition-reference) component. Since jQuery Datatables dependencies does not support server-side rendering (SSR), Bootstrap-Vue Table will likely be the answer.
410410
411411
## License

example/index.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -640,7 +640,7 @@ var myUniqueId = 1;
640640
}
641641

642642
if (field.template) {
643-
field.render = vm.compileTemplate(field.template);
643+
field.render = vm.compileTemplate(field);
644644
}
645645

646646
if (field.render) {
@@ -810,7 +810,7 @@ var myUniqueId = 1;
810810
var renderFunc = vm.details.render; // must be string template
811811

812812
if (vm.details.template) {
813-
renderFunc = vm.compileTemplate(vm.details.template);
813+
renderFunc = vm.compileTemplate(vm.details);
814814
} else if (renderFunc) {
815815
renderFunc = function renderFunc() {
816816
return vm.details.render.apply(vm, _arguments2);
@@ -864,13 +864,13 @@ var myUniqueId = 1;
864864
/**
865865
* Vue.compile a template string and return the compiled function
866866
*
867-
* @param {String} template the string template
867+
* @param {Object} object with template property
868868
* @return {Function} the compiled template function
869869
*/
870-
compileTemplate: function compileTemplate(template) {
870+
compileTemplate: function compileTemplate(field) {
871871
var vm = this;
872872
var jq = vm.jq;
873-
var res = Vue.compile("<div>".concat(template, "</div>"));
873+
var res = Vue.compile("<div>".concat(field.template, "</div>"));
874874

875875
var renderFunc = function renderFunc(data, type, row, meta) {
876876
var comp = new Vue({
@@ -879,7 +879,8 @@ var myUniqueId = 1;
879879
type: type,
880880
row: row,
881881
meta: meta,
882-
vdtnet: vm
882+
vdtnet: vm,
883+
def: field
883884
},
884885
render: res.render,
885886
staticRenderFns: res.staticRenderFns

example/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/mix-manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"/index.js": "/index.js?id=3c7a4dc674e4f56d67e5",
3-
"/index.js.map": "/index.js.map?id=56078c7b2ad40ab63ee5"
2+
"/index.js": "/index.js?id=ba6728142b858139db55",
3+
"/index.js.map": "/index.js.map?id=f10a7aab7fbc789bf4c0"
44
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "vue-datatables-net",
33
"description": "Vue jQuery DataTables.net wrapper component",
4-
"version": "1.2.0",
4+
"version": "1.2.1",
55
"author": "[email protected]",
66
"license": "MIT",
77
"main": "lib/index.js",

src/VdtnetTable.vue

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ export default {
220220
}
221221
222222
if (field.template) {
223-
field.render = vm.compileTemplate(field.template)
223+
field.render = vm.compileTemplate(field)
224224
}
225225
226226
if (field.render) {
@@ -392,7 +392,7 @@ export default {
392392
393393
// must be string template
394394
if (vm.details.template) {
395-
renderFunc = vm.compileTemplate(vm.details.template)
395+
renderFunc = vm.compileTemplate(vm.details)
396396
} else if (renderFunc) {
397397
renderFunc = () => {
398398
return vm.details.render.apply(vm, arguments)
@@ -444,21 +444,22 @@ export default {
444444
/**
445445
* Vue.compile a template string and return the compiled function
446446
*
447-
* @param {String} template the string template
447+
* @param {Object} object with template property
448448
* @return {Function} the compiled template function
449449
*/
450-
compileTemplate(template) {
450+
compileTemplate(field) {
451451
const vm = this
452452
const jq = vm.jq
453-
const res = Vue.compile(`<div>${template}</div>`)
453+
const res = Vue.compile(`<div>${field.template}</div>`)
454454
const renderFunc = (data, type, row, meta) => {
455455
const comp = new Vue({
456456
data: {
457-
data: data,
458-
type: type,
459-
row: row,
460-
meta: meta,
461-
vdtnet: vm
457+
data: data,
458+
type: type,
459+
row: row,
460+
meta: meta,
461+
vdtnet: vm,
462+
def: field
462463
},
463464
render: res.render,
464465
staticRenderFns: res.staticRenderFns

0 commit comments

Comments
 (0)