11/**
2- * vue-formly-bootstrap v2.0.2
2+ * vue-formly-bootstrap v2.2.0
33 * https://github.com/matt-sanders/vue-formly-bootstrap
44 * Released under the MIT License.
55 */
@@ -634,9 +634,9 @@ return /******/ (function(modules) { // webpackBootstrap
634634
635635 var map = {
636636 "./fieldInput.vue" : 38 ,
637- "./fieldList.vue" : 42 ,
638- "./fieldSelect.vue" : 45 ,
639- "./fieldTextarea.vue" : 48
637+ "./fieldList.vue" : 45 ,
638+ "./fieldSelect.vue" : 48 ,
639+ "./fieldTextarea.vue" : 51
640640 } ;
641641 function webpackContext ( req ) {
642642 return __webpack_require__ ( webpackContextResolve ( req ) ) ;
@@ -662,7 +662,7 @@ return /******/ (function(modules) { // webpackBootstrap
662662 __vue_script__ . __esModule &&
663663 Object . keys ( __vue_script__ ) . length > 1 ) {
664664 console . warn ( "[vue-loader] src/fields/fieldInput.vue: named exports in *.vue files are ignored." ) }
665- __vue_template__ = __webpack_require__ ( 41 )
665+ __vue_template__ = __webpack_require__ ( 44 )
666666 module . exports = __vue_script__ || { }
667667 if ( module . exports . __esModule ) module . exports = module . exports . default
668668 if ( __vue_template__ ) {
@@ -712,19 +712,31 @@ return /******/ (function(modules) { // webpackBootstrap
712712
713713/***/ } ,
714714/* 40 */
715- /***/ function ( module , exports ) {
715+ /***/ function ( module , exports , __webpack_require__ ) {
716716
717717 'use strict' ;
718718
719719 Object . defineProperty ( exports , "__esModule" , {
720720 value : true
721721 } ) ;
722+
723+ var _keys = __webpack_require__ ( 2 ) ;
724+
725+ var _keys2 = _interopRequireDefault ( _keys ) ;
726+
727+ var _errorDisplay = __webpack_require__ ( 41 ) ;
728+
729+ var _errorDisplay2 = _interopRequireDefault ( _errorDisplay ) ;
730+
731+ function _interopRequireDefault ( obj ) { return obj && obj . __esModule ? obj : { default : obj } ; }
732+
722733 exports . default = {
723734 props : [ 'form' , 'field' , 'model' , 'to' ] ,
724735 created : function created ( ) {
725736 var state = {
726737 '$dirty' : false ,
727- '$active' : false
738+ '$active' : false ,
739+ '$hasError' : false
728740 } ;
729741 this . $set ( this . form , this . field . key , state ) ;
730742 } ,
@@ -754,26 +766,111 @@ return /******/ (function(modules) { // webpackBootstrap
754766 onKeydown : function onKeydown ( e ) {
755767 this . runFunction ( 'onKeydown' , e ) ;
756768 }
769+ } ,
770+ computed : {
771+ hasError : function hasError ( ) {
772+ if ( this . form [ this . field . key ] . $dirty == false || this . form [ this . field . key ] . $active == true ) {
773+ return false ;
774+ }
775+ var errors = this . form . $errors [ this . field . key ] ;
776+ var hasErrors = false ;
777+ ( 0 , _keys2 . default ) ( errors ) . forEach ( function ( err ) {
778+ if ( errors [ err ] !== false ) hasErrors = true ;
779+ } ) ;
780+ this . $set ( this . form [ this . field . key ] , '$hasError' , hasErrors ) ;
781+ return hasErrors ;
782+ }
783+ } ,
784+ components : {
785+ 'error-display' : _errorDisplay2 . default
757786 }
758787 } ;
759788
760789/***/ } ,
761790/* 41 */
762- /***/ function ( module , exports ) {
791+ /***/ function ( module , exports , __webpack_require__ ) {
763792
764- module . exports = "\n<div class=\"form-group formly-input\" :class=\"[ to.inputType, {'formly-has-value': model[field.key], 'formly-has-focus': form[field.key].$active}]\">\n <label v-if=\"to.label\" :for=\"to.id ? to.id : null\">{{to.label}}</label>\n <input class=\"form-control\" :class=\"to.classes\" :id=\"to.id ? to.id : null\" type=\"text\" v-model=\"model[field.key]\" @blur=\"onBlur\" @focus=\"onFocus\" @click=\"onClick\" @change=\"onChange\" @keyup=\"onKeyup\" @keydown=\"onKeydown\" v-formly-atts=\"to.atts\" v-formly-input-type=\"to.inputType\">\n</div>\n" ;
793+ var __vue_script__ , __vue_template__
794+ __vue_script__ = __webpack_require__ ( 42 )
795+ if ( __vue_script__ &&
796+ __vue_script__ . __esModule &&
797+ Object . keys ( __vue_script__ ) . length > 1 ) {
798+ console . warn ( "[vue-loader] src/components/errorDisplay.vue: named exports in *.vue files are ignored." ) }
799+ __vue_template__ = __webpack_require__ ( 43 )
800+ module . exports = __vue_script__ || { }
801+ if ( module . exports . __esModule ) module . exports = module . exports . default
802+ if ( __vue_template__ ) {
803+ ( typeof module . exports === "function" ? ( module . exports . options || ( module . exports . options = { } ) ) : module . exports ) . template = __vue_template__
804+ }
805+ if ( false ) { ( function ( ) { module . hot . accept ( )
806+ var hotAPI = require ( "vue-hot-reload-api" )
807+ hotAPI . install ( require ( "vue" ) , false )
808+ if ( ! hotAPI . compatible ) return
809+ var id = "_v-54a3409b/errorDisplay.vue"
810+ if ( ! module . hot . data ) {
811+ hotAPI . createRecord ( id , module . exports )
812+ } else {
813+ hotAPI . update ( id , module . exports , __vue_template__ )
814+ }
815+ } ) ( ) }
765816
766817/***/ } ,
767818/* 42 */
819+ /***/ function ( module , exports , __webpack_require__ ) {
820+
821+ 'use strict' ;
822+
823+ Object . defineProperty ( exports , "__esModule" , {
824+ value : true
825+ } ) ;
826+
827+ var _keys = __webpack_require__ ( 2 ) ;
828+
829+ var _keys2 = _interopRequireDefault ( _keys ) ;
830+
831+ function _interopRequireDefault ( obj ) { return obj && obj . __esModule ? obj : { default : obj } ; }
832+
833+ exports . default = {
834+ props : [ 'field' , 'form' ] ,
835+ computed : {
836+ message : function message ( ) {
837+ var message = false ;
838+ if ( ! ( this . field in this . form . $errors ) || ! ( this . field in this . form ) || this . form [ this . field ] . $active || ! this . form [ this . field ] . $dirty ) return message ;
839+ var errors = this . form . $errors [ this . field ] ;
840+ ( 0 , _keys2 . default ) ( errors ) . some ( function ( errorKey ) {
841+ if ( typeof errors [ errorKey ] != 'boolean' ) {
842+ message = errors [ errorKey ] ;
843+ return true ;
844+ }
845+ } ) ;
846+ return message ;
847+ }
848+ }
849+ } ;
850+
851+ /***/ } ,
852+ /* 43 */
853+ /***/ function ( module , exports ) {
854+
855+ module . exports = "\n<span v-if=\"message\" class=\"help-block\">{{message}}</span>\n" ;
856+
857+ /***/ } ,
858+ /* 44 */
859+ /***/ function ( module , exports ) {
860+
861+ module . exports = "\n<div class=\"form-group formly-input\" :class=\"[ to.inputType, {'formly-has-value': model[field.key], 'formly-has-focus': form[field.key].$active, 'has-error': hasError}]\">\n <label v-if=\"to.label\" :for=\"to.id ? to.id : null\">{{to.label}}</label>\n <input class=\"form-control\" :class=\"to.classes\" :id=\"to.id ? to.id : null\" type=\"text\" v-model=\"model[field.key]\" @blur=\"onBlur\" @focus=\"onFocus\" @click=\"onClick\" @change=\"onChange\" @keyup=\"onKeyup\" @keydown=\"onKeydown\" v-formly-atts=\"to.atts\" v-formly-input-type=\"to.inputType\">\n <error-display :form=\"form\" :field=\"field.key\"></error-display>\n</div>\n" ;
862+
863+ /***/ } ,
864+ /* 45 */
768865/***/ function ( module , exports , __webpack_require__ ) {
769866
770867 var __vue_script__ , __vue_template__
771- __vue_script__ = __webpack_require__ ( 43 )
868+ __vue_script__ = __webpack_require__ ( 46 )
772869 if ( __vue_script__ &&
773870 __vue_script__ . __esModule &&
774871 Object . keys ( __vue_script__ ) . length > 1 ) {
775872 console . warn ( "[vue-loader] src/fields/fieldList.vue: named exports in *.vue files are ignored." ) }
776- __vue_template__ = __webpack_require__ ( 44 )
873+ __vue_template__ = __webpack_require__ ( 47 )
777874 module . exports = __vue_script__ || { }
778875 if ( module . exports . __esModule ) module . exports = module . exports . default
779876 if ( __vue_template__ ) {
@@ -792,7 +889,7 @@ return /******/ (function(modules) { // webpackBootstrap
792889 } ) ( ) }
793890
794891/***/ } ,
795- /* 43 */
892+ /* 46 */
796893/***/ function ( module , exports , __webpack_require__ ) {
797894
798895 'use strict' ;
@@ -816,22 +913,22 @@ return /******/ (function(modules) { // webpackBootstrap
816913 } ;
817914
818915/***/ } ,
819- /* 44 */
916+ /* 47 */
820917/***/ function ( module , exports ) {
821918
822- module . exports = "\n<div class=\"checkbox formly-list\" :id=\"to.id\" :class=\"to.classes\">\n\n <label v-for=\"option in field.options\">\n <input v-if=\"!to.inputType || to.inputType == 'checkbox'\" type=\"checkbox\" v-model=\"model[field.key]\" :value=\"option.value || option\" @blur=\"onBlur\" @focus=\"onFocus\" @click=\"onClick\" @change=\"onChange\" @keyup=\"onKeyup\" @keydown=\"onKeydown\" v-formly-atts=\"to.atts\">\n <input v-if=\"to.inputType == 'radio'\" type=\"radio\" v-model=\"model[field.key]\" :value=\"option.value || option\" @blur=\"onBlur\" @focus=\"onFocus\" @click=\"onClick\" @change=\"onChange\" @keyup=\"onKeyup\" @keydown=\"onKeydown\" v-formly-atts=\"to.atts\">\n {{option.label || option}}\n </label>\n \n</div>\n" ;
919+ module . exports = "\n<div class=\"checkbox formly-list\" :id=\"to.id\" :class=\"[ to.classes, {'has-error': hasError}] \">\n\n <label v-for=\"option in field.options\">\n <input v-if=\"!to.inputType || to.inputType == 'checkbox'\" type=\"checkbox\" v-model=\"model[field.key]\" :value=\"option.value || option\" @blur=\"onBlur\" @focus=\"onFocus\" @click=\"onClick\" @change=\"onChange\" @keyup=\"onKeyup\" @keydown=\"onKeydown\" v-formly-atts=\"to.atts\">\n <input v-if=\"to.inputType == 'radio'\" type=\"radio\" v-model=\"model[field.key]\" :value=\"option.value || option\" @blur=\"onBlur\" @focus=\"onFocus\" @click=\"onClick\" @change=\"onChange\" @keyup=\"onKeyup\" @keydown=\"onKeydown\" v-formly-atts=\"to.atts\">\n {{option.label || option}}\n </label>\n <error-display :form=\"form\" :field=\"field.key\"></error-display> \n</div>\n" ;
823920
824921/***/ } ,
825- /* 45 */
922+ /* 48 */
826923/***/ function ( module , exports , __webpack_require__ ) {
827924
828925 var __vue_script__ , __vue_template__
829- __vue_script__ = __webpack_require__ ( 46 )
926+ __vue_script__ = __webpack_require__ ( 49 )
830927 if ( __vue_script__ &&
831928 __vue_script__ . __esModule &&
832929 Object . keys ( __vue_script__ ) . length > 1 ) {
833930 console . warn ( "[vue-loader] src/fields/fieldSelect.vue: named exports in *.vue files are ignored." ) }
834- __vue_template__ = __webpack_require__ ( 47 )
931+ __vue_template__ = __webpack_require__ ( 50 )
835932 module . exports = __vue_script__ || { }
836933 if ( module . exports . __esModule ) module . exports = module . exports . default
837934 if ( __vue_template__ ) {
@@ -850,7 +947,7 @@ return /******/ (function(modules) { // webpackBootstrap
850947 } ) ( ) }
851948
852949/***/ } ,
853- /* 46 */
950+ /* 49 */
854951/***/ function ( module , exports , __webpack_require__ ) {
855952
856953 'use strict' ;
@@ -870,22 +967,22 @@ return /******/ (function(modules) { // webpackBootstrap
870967 } ;
871968
872969/***/ } ,
873- /* 47 */
970+ /* 50 */
874971/***/ function ( module , exports ) {
875972
876- module . exports = "\n<div class=\"form-group formly-select\">\n <label v-if=\"to.label\" :for=\"to.id ? to.id : null\">{{to.label}}</label>\n <select class=\"form-control\" :class=\"to.classes\" :id=\"to.id ? to.id : null\" v-model=\"model[field.key]\" @blur=\"onBlur\" @focus=\"onFocus\" @click=\"onClick\" @change=\"onChange\" @keyup=\"onKeyup\" @keydown=\"onKeydown\" v-formly-atts=\"to.atts\">\n <option v-for=\"option in field.options\" :value=\"option.value || option\">{{option.label || option}}</option>\n </select>\n</div>\n" ;
973+ module . exports = "\n<div class=\"form-group formly-select\" :class=\"{'has-error': hasError}\" >\n <label v-if=\"to.label\" :for=\"to.id ? to.id : null\">{{to.label}}</label>\n <select class=\"form-control\" :class=\"to.classes\" :id=\"to.id ? to.id : null\" v-model=\"model[field.key]\" @blur=\"onBlur\" @focus=\"onFocus\" @click=\"onClick\" @change=\"onChange\" @keyup=\"onKeyup\" @keydown=\"onKeydown\" v-formly-atts=\"to.atts\">\n <option v-for=\"option in field.options\" :value=\"option.value || option\">{{option.label || option}}</option>\n </select>\n <error-display :form=\"form\" :field=\"field.key\"></error-display >\n</div>\n" ;
877974
878975/***/ } ,
879- /* 48 */
976+ /* 51 */
880977/***/ function ( module , exports , __webpack_require__ ) {
881978
882979 var __vue_script__ , __vue_template__
883- __vue_script__ = __webpack_require__ ( 49 )
980+ __vue_script__ = __webpack_require__ ( 52 )
884981 if ( __vue_script__ &&
885982 __vue_script__ . __esModule &&
886983 Object . keys ( __vue_script__ ) . length > 1 ) {
887984 console . warn ( "[vue-loader] src/fields/fieldTextarea.vue: named exports in *.vue files are ignored." ) }
888- __vue_template__ = __webpack_require__ ( 50 )
985+ __vue_template__ = __webpack_require__ ( 53 )
889986 module . exports = __vue_script__ || { }
890987 if ( module . exports . __esModule ) module . exports = module . exports . default
891988 if ( __vue_template__ ) {
@@ -904,12 +1001,12 @@ return /******/ (function(modules) { // webpackBootstrap
9041001 } ) ( ) }
9051002
9061003/***/ } ,
907- /* 49 */
908- 46 ,
909- /* 50 */
1004+ /* 52 */
1005+ 49 ,
1006+ /* 53 */
9101007/***/ function ( module , exports ) {
9111008
912- module . exports = "\n<div class=\"form-group formly-textarea\">\n <label v-if=\"to.label\" :for=\"to.id ? to.id : null\">{{to.label}}</label>\n <textarea class=\"form-control\" :class=\"to.classes\" :id=\"to.id ? to.id : null\" v-model=\"model[field.key]\" @blur=\"onBlur\" @focus=\"onFocus\" @click=\"onClick\" @change=\"onChange\" @keyup=\"onKeyup\" @keydown=\"onKeydown\" v-formly-atts=\"to.atts\"></textarea>\n</div>\n" ;
1009+ module . exports = "\n<div class=\"form-group formly-textarea\" :class=\"{'formly-has-value': model[field.key], 'formly-has-focus': form[field.key].$active, 'has-error': hasError}\" >\n <label v-if=\"to.label\" :for=\"to.id ? to.id : null\">{{to.label}}</label>\n <textarea class=\"form-control\" :class=\"to.classes\" :id=\"to.id ? to.id : null\" v-model=\"model[field.key]\" @blur=\"onBlur\" @focus=\"onFocus\" @click=\"onClick\" @change=\"onChange\" @keyup=\"onKeyup\" @keydown=\"onKeydown\" v-formly-atts=\"to.atts\"></textarea>\n <error-display :form=\"form\" :field=\"field.key\"></error-display >\n</div>\n" ;
9131010
9141011/***/ }
9151012/******/ ] ) ) )
0 commit comments