Skip to content

Commit 3641153

Browse files
committed
adding wrapper options to vue formly
1 parent bd1806d commit 3641153

File tree

3 files changed

+51
-4
lines changed

3 files changed

+51
-4
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vue-formly",
3-
"version": "2.0.0",
3+
"version": "2.1.0",
44
"description": "A simple and extendable form builder for Vue.js",
55
"main": "dist/vue-formly.js",
66
"scripts": {

src/components/FormlyField.vue

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,24 @@
5151
this.$watch('model.'+this.field.key, (val) =>{
5252
let valid = this.validate();
5353
});
54+
},
55+
mounted(){
56+
if ( !this.field.wrapper ) return;
57+
58+
//create a temporary element
59+
let wrapper = document.createElement('DIV');
60+
//populate it with the wrapper string
61+
wrapper.innerHTML = this.field.wrapper;
62+
//get the parent
63+
let parent = this.$el.parentNode;
64+
//insert the wrapper before this element
65+
parent.insertBefore(wrapper, this.$el);
66+
//append the element to the new wrapper
67+
wrapper.firstChild.appendChild( this.$el );
68+
//move the new wrapper back to where it should be
69+
parent.insertBefore(wrapper.firstChild, wrapper);
70+
//remove the temporary element
71+
parent.removeChild(wrapper);
5472
}
5573
}
5674
</script>

test/unit/specs/FormlyField.spec.js

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@ import FormlyField from 'src/components/FormlyField.vue';
66
let el, vm;
77

88
function createForm(template, data){
9-
el = document.createElement('div');
9+
el = document.createElement('DIV');
10+
document.body.appendChild(el);
1011
//el.innerHTML = template;
1112
vm = new Vue({
12-
el: el,
1313
data: data,
1414
template: template,
1515
components: {
1616
'formly-field': FormlyField
1717
}
18-
}).$mount();
18+
}).$mount(el);
1919

2020
return [el, vm];
2121
}
@@ -123,6 +123,35 @@ describe('FormlyField', () => {
123123

124124
});
125125

126+
it('Should take a wrapper string', () => {
127+
Vue.component('formly_test', {
128+
props: ['form', 'field', 'model', 'to'],
129+
template: '<div></div>'
130+
});
131+
132+
let data = {
133+
form: {
134+
$errors: {},
135+
$valid: {}
136+
},
137+
fields: [
138+
{
139+
key: 'wrapped',
140+
type: 'test',
141+
wrapper: '<div id="test_wrapper_element"></div>'
142+
}
143+
],
144+
model: {
145+
wrapped: ''
146+
}
147+
};
148+
createForm('<formly-field :form.sync="form" :field="fields[0]" :model="model"></formly-field>', data);
149+
150+
let parent = vm.$el.parentNode;
151+
expect(parent.firstChild).to.equal(vm.$el);
152+
expect(parent.id).to.equal('test_wrapper_element');
153+
});
154+
126155

127156
describe('Validation', ()=>{
128157

0 commit comments

Comments
 (0)