Skip to content

Commit 5390345

Browse files
committed
added dirty and blur events
1 parent 813ee34 commit 5390345

File tree

6 files changed

+224
-7
lines changed

6 files changed

+224
-7
lines changed

dist/vue-formly-bootstrap.js

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
/**
2+
* vue-formly-bootstrap v0.0.0
3+
* https://github.com/matt-sanders/vue-formly-bootstrap
4+
* Released under the MIT License.
5+
*/
6+
7+
(function webpackUniversalModuleDefinition(root, factory) {
8+
if(typeof exports === 'object' && typeof module === 'object')
9+
module.exports = factory();
10+
else if(typeof define === 'function' && define.amd)
11+
define([], factory);
12+
else if(typeof exports === 'object')
13+
exports["VueFormlyBootstrap"] = factory();
14+
else
15+
root["VueFormlyBootstrap"] = factory();
16+
})(this, function() {
17+
return /******/ (function(modules) { // webpackBootstrap
18+
/******/ // The module cache
19+
/******/ var installedModules = {};
20+
21+
/******/ // The require function
22+
/******/ function __webpack_require__(moduleId) {
23+
24+
/******/ // Check if module is in cache
25+
/******/ if(installedModules[moduleId])
26+
/******/ return installedModules[moduleId].exports;
27+
28+
/******/ // Create a new module (and put it into the cache)
29+
/******/ var module = installedModules[moduleId] = {
30+
/******/ exports: {},
31+
/******/ id: moduleId,
32+
/******/ loaded: false
33+
/******/ };
34+
35+
/******/ // Execute the module function
36+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
37+
38+
/******/ // Flag the module as loaded
39+
/******/ module.loaded = true;
40+
41+
/******/ // Return the exports of the module
42+
/******/ return module.exports;
43+
/******/ }
44+
45+
46+
/******/ // expose the modules object (__webpack_modules__)
47+
/******/ __webpack_require__.m = modules;
48+
49+
/******/ // expose the module cache
50+
/******/ __webpack_require__.c = installedModules;
51+
52+
/******/ // __webpack_public_path__
53+
/******/ __webpack_require__.p = "";
54+
55+
/******/ // Load entry module and return exports
56+
/******/ return __webpack_require__(0);
57+
/******/ })
58+
/************************************************************************/
59+
/******/ ([
60+
/* 0 */
61+
/***/ function(module, exports, __webpack_require__) {
62+
63+
"use strict";
64+
65+
Object.defineProperty(exports, "__esModule", {
66+
value: true
67+
});
68+
var Fields = __webpack_require__(1);
69+
var FormlyBootstrap = {
70+
install: function install(Vue, options) {
71+
Fields.keys().forEach(function (key) {
72+
var component = key.replace(/^\.\//, "").replace(/\.vue/, "").replace(/^field/, "");
73+
74+
component = component.charAt(0).toLowerCase() + component.slice(1);
75+
76+
Vue.$formly.addType(component, Fields(key));
77+
});
78+
}
79+
};
80+
81+
if (typeof window !== 'undefined' && window.Vue) {
82+
window.Vue.use(FormlyBootstrap);
83+
}
84+
85+
exports.default = FormlyBootstrap;
86+
87+
/***/ },
88+
/* 1 */
89+
/***/ function(module, exports, __webpack_require__) {
90+
91+
var map = {
92+
"./fieldInput.vue": 2
93+
};
94+
function webpackContext(req) {
95+
return __webpack_require__(webpackContextResolve(req));
96+
};
97+
function webpackContextResolve(req) {
98+
return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }());
99+
};
100+
webpackContext.keys = function webpackContextKeys() {
101+
return Object.keys(map);
102+
};
103+
webpackContext.resolve = webpackContextResolve;
104+
module.exports = webpackContext;
105+
webpackContext.id = 1;
106+
107+
108+
/***/ },
109+
/* 2 */
110+
/***/ function(module, exports, __webpack_require__) {
111+
112+
var __vue_script__, __vue_template__
113+
__vue_script__ = __webpack_require__(3)
114+
if (__vue_script__ &&
115+
__vue_script__.__esModule &&
116+
Object.keys(__vue_script__).length > 1) {
117+
console.warn("[vue-loader] src/fields/fieldInput.vue: named exports in *.vue files are ignored.")}
118+
__vue_template__ = __webpack_require__(5)
119+
module.exports = __vue_script__ || {}
120+
if (module.exports.__esModule) module.exports = module.exports.default
121+
if (__vue_template__) {
122+
(typeof module.exports === "function" ? (module.exports.options || (module.exports.options = {})) : module.exports).template = __vue_template__
123+
}
124+
if (false) {(function () { module.hot.accept()
125+
var hotAPI = require("vue-hot-reload-api")
126+
hotAPI.install(require("vue"), false)
127+
if (!hotAPI.compatible) return
128+
var id = "_v-6282284c/fieldInput.vue"
129+
if (!module.hot.data) {
130+
hotAPI.createRecord(id, module.exports)
131+
} else {
132+
hotAPI.update(id, module.exports, __vue_template__)
133+
}
134+
})()}
135+
136+
/***/ },
137+
/* 3 */
138+
/***/ function(module, exports, __webpack_require__) {
139+
140+
'use strict';
141+
142+
Object.defineProperty(exports, "__esModule", {
143+
value: true
144+
});
145+
146+
var _baseField = __webpack_require__(4);
147+
148+
var _baseField2 = _interopRequireDefault(_baseField);
149+
150+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
151+
152+
exports.default = {
153+
mixins: [_baseField2.default]
154+
};
155+
156+
/***/ },
157+
/* 4 */
158+
/***/ function(module, exports) {
159+
160+
'use strict';
161+
162+
Object.defineProperty(exports, "__esModule", {
163+
value: true
164+
});
165+
exports.default = {
166+
props: ['form', 'key']
167+
};
168+
169+
/***/ },
170+
/* 5 */
171+
/***/ function(module, exports) {
172+
173+
module.exports = "\n<div class=\"form-group\">\n <label v-if=\"form[key].label\" :for=\"form[key].id ? form[key].id : null\">{{form[key].label}}</label>\n <input class=\"form-control\" :id=\"form[key].id ? form[key].id : null\" :type=\"form[key].inputType\" v-model=\"form[key].value\" :placeholder=\"form[key].placeholder\">\n</div>\n";
174+
175+
/***/ }
176+
/******/ ])
177+
});
178+
;

dist/vue-formly-bootstrap.min.js

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/fields/baseField.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,14 @@ export default
33
props: [
44
'form',
55
'key'
6-
]
6+
],
7+
created: function(){
8+
this.$set('form.'+this.key+'.$dirty', false);
9+
},
10+
methods: {
11+
onBlur: function(event){
12+
console.log('hit');
13+
this.$set('form.'+this.key+'.$dirty', true);
14+
}
15+
}
716
};

src/fields/fieldInput.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<div class="form-group">
33
<label v-if="form[key].label" :for="form[key].id ? form[key].id : null">{{form[key].label}}</label>
4-
<input class="form-control" :id="form[key].id ? form[key].id : null" :type="form[key].inputType" v-model="form[key].value" :placeholder="form[key].placeholder">
4+
<input class="form-control" :id="form[key].id ? form[key].id : null" :type="form[key].inputType" v-model="form[key].value" :placeholder="form[key].placeholder" @blur="onBlur">
55
</div>
66
</template>
77

src/index.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import VueFormly from 'vue-formly';
2-
31
let Fields = require.context("./fields/", false, /^\.\/field([\w-_]+)\.vue$/);
42
let FormlyBootstrap = {
53
install(Vue, options){

test/unit/specs/index.spec.js

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import FormlyBootstrap from 'src/index';
55
Vue.use(VueFormly);
66
Vue.use(FormlyBootstrap);
77

8-
let el, vm;
8+
let el, vm, data;
99

1010
function createForm(){
1111
el = document.createElement('div');
@@ -18,8 +18,12 @@ function createForm(){
1818
return [el, vm];
1919
}
2020

21-
let data;
22-
21+
function trigger (target, event, process) {
22+
var e = document.createEvent('HTMLEvents')
23+
e.initEvent(event, true, true)
24+
if (process) process(e)
25+
target.dispatchEvent(e)
26+
}
2327

2428
describe('components', () => {
2529

@@ -33,6 +37,26 @@ describe('components', () => {
3337
};
3438
});
3539

40+
describe('functions', () => {
41+
42+
beforeEach(() => {
43+
data.form.test.type = 'input';
44+
data.form.test.inputType = 'text';
45+
});
46+
47+
it('dirty', () => {
48+
createForm();
49+
expect(vm.form.test.$dirty).to.be.false;
50+
});
51+
52+
it('blur', () => {
53+
createForm();
54+
trigger(vm.$el.querySelectorAll('input')[0], 'blur');
55+
expect(vm.form.test.$dirty).to.be.true;
56+
});
57+
58+
});
59+
3660
describe('input', () => {
3761

3862
it('basic functions', (done) => {
@@ -75,6 +99,7 @@ describe('components', () => {
7599

76100
expect(vm.$el.querySelectorAll('label')).to.be.length(0);
77101
});
102+
78103
});
79104

80105

0 commit comments

Comments
 (0)